| | |
| | | "https://bsc-dataseed1.ninicoin.io", |
| | | "0x46ac4921e58773ca22826df1640672b91b1db2b3", |
| | | ""), |
| | | BSC_GFA("BSC", "0x977a9ddfb965a9a3416fa72ca7f91c4949c18f25", |
| | | "0xefe98e00cd227b6322e892c82fcbd8eadf119c3188b7e574bc624f65405d61bf", |
| | | "https://bsc-dataseed1.ninicoin.io", |
| | | "0xaC97ff8173c41b83111b411A3Fa62D7C6ff385be", |
| | | ""), |
| | | |
| | | /** |
| | | * 源池币 |
| | |
| | | BigInteger balanceOfUnDecimal(String address); |
| | | |
| | | BigDecimal balanceOf(String address); |
| | | BigDecimal getPrice(String address); |
| | | |
| | | BigInteger allowance(String address); |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public BigDecimal getPrice(String address) { |
| | | BigInteger decimals = BigInteger.ZERO; |
| | | try { |
| | | String methodName = "getPrice"; |
| | | List<Type> inputParameters = new ArrayList<>(); |
| | | List<TypeReference<?>> outputParameters = new ArrayList<>(); |
| | | TypeReference<Uint256> typeReference = new TypeReference<Uint256>() { |
| | | }; |
| | | outputParameters.add(typeReference); |
| | | Function function = new Function(methodName, inputParameters, outputParameters); |
| | | String data = FunctionEncoder.encode(function); |
| | | Transaction transaction = Transaction.createEthCallTransaction(null, contractAddress, data); |
| | | |
| | | EthCall ethCall; |
| | | try { |
| | | ethCall = web3j.ethCall(transaction, DefaultBlockParameterName.LATEST).send(); |
| | | List<Type> results = FunctionReturnDecoder.decode(ethCall.getValue(), function.getOutputParameters()); |
| | | decimals = (BigInteger) results.get(0).getValue(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | int decimal = decimals(); |
| | | double res = new BigDecimal(decimals).divide(BigDecimal.valueOf(Math.pow(10, decimal)), 8, RoundingMode.HALF_DOWN).doubleValue(); |
| | | if (res > 0) { |
| | | return new BigDecimal(res); |
| | | } |
| | | return BigDecimal.ZERO; |
| | | } |
| | | |
| | | @Override |
| | | public BigInteger allowance(String address) { |
| | | String methodName = "allowance"; |
| | | List<TypeReference<?>> outputParameters = new ArrayList<>(); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public BigDecimal getPrice(String address) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public int decimals() { |
| | | return 0; |
| | | } |
| | |
| | | import cc.mrbird.febs.common.enumerates.DataDicEnum; |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | | import cc.mrbird.febs.dapp.entity.DappCoinPrice; |
| | | import cc.mrbird.febs.dapp.entity.DappHdRecord; |
| | | import cc.mrbird.febs.dapp.entity.PlatformBanner; |
| | | import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper; |
| | | import cc.mrbird.febs.dapp.service.DappSystemService; |
| | |
| | | @GetMapping("coinPrice") |
| | | public FebsResponse coinPrice(DappCoinPrice dappCoinPrice, QueryRequest request) { |
| | | Map<String, Object> data = getDataTable(iAdminBannerService.findCoinPriceInPage(dappCoinPrice, request)); |
| | | return new FebsResponse().success().data(data); |
| | | } |
| | | |
| | | /** |
| | | * 价格---列表 |
| | | */ |
| | | @GetMapping("hdRecord") |
| | | public FebsResponse hdRecord(DappHdRecord dappHdRecord, QueryRequest request) { |
| | | Map<String, Object> data = getDataTable(iAdminBannerService.findHdRecordInPage(dappHdRecord, request)); |
| | | return new FebsResponse().success().data(data); |
| | | } |
| | | |
| | |
| | | if(BigDecimal.ZERO.compareTo(coinAmount) > 0){ |
| | | return new FebsResponse().fail().message("请设置钱包GFA"); |
| | | } |
| | | dappSystemService.tradeProfitDistribute(1L); |
| | | // dappSystemService.tradeProfitDistribute(1L); |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | |
| | | public class DappHdRecord extends BaseEntity { |
| | | |
| | | private BigDecimal price; |
| | | private BigDecimal usdtEvery;//每日新增 |
| | | private BigDecimal usdtAmount;//总数 |
| | | private BigDecimal coinEvery; |
| | | private BigDecimal coinAmount; |
| | | private BigDecimal usdtEvery;//滑点新增 |
| | | private BigDecimal usdtAmount;//滑点累计 |
| | | private BigDecimal coinEvery;//币量新增 |
| | | private BigDecimal coinAmount;//币量累计 |
| | | } |
| | |
| | | |
| | | IPage<DappCoinPrice> findCoinPriceInPage(Page<DappCoinPrice> page, @Param("record")DappCoinPrice dappCoinPrice); |
| | | |
| | | IPage<DappHdRecord> findHdRecordInPage(Page<DappHdRecord> page, @Param("record")DappHdRecord dappCoinPrice); |
| | | |
| | | DappHdRecord selectNewRecord(); |
| | | |
| | | } |
| | |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.dapp.entity.DappCoinPrice; |
| | | import cc.mrbird.febs.dapp.entity.DappHdRecord; |
| | | import cc.mrbird.febs.dapp.entity.PlatformBanner; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | |
| | | IPage<DappCoinPrice> findCoinPriceInPage(DappCoinPrice dappCoinPrice, QueryRequest request); |
| | | |
| | | FebsResponse coinPriceAdd(String price); |
| | | |
| | | IPage<DappHdRecord> findHdRecordInPage(DappHdRecord dappHdRecord, QueryRequest request); |
| | | } |
| | |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.enumerates.DataDicEnum; |
| | | import cc.mrbird.febs.dapp.entity.DappCoinPrice; |
| | | import cc.mrbird.febs.dapp.entity.DappHdRecord; |
| | | import cc.mrbird.febs.dapp.entity.DataDictionaryCustom; |
| | | import cc.mrbird.febs.dapp.entity.PlatformBanner; |
| | | import cc.mrbird.febs.dapp.mapper.DappCoinPriceMapper; |
| | |
| | | asyncCjService.redisCacheUpdate(DataDicEnum.GFA_PRICE.getValue(),bigDecimal.toString(),0); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<DappHdRecord> findHdRecordInPage(DappHdRecord dappHdRecord, QueryRequest request) { |
| | | Page<DappHdRecord> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<DappHdRecord> dappHdRecordIPage = dappHdRecordMapper.findHdRecordInPage(page, dappHdRecord); |
| | | return dappHdRecordIPage; |
| | | } |
| | | } |
| | |
| | | */ |
| | | |
| | | //当天实际当天滑点 |
| | | |
| | | BigDecimal gfaPrice = new BigDecimal( |
| | | redisUtils.getString(DataDicEnum.GFA_PRICE.getValue()) |
| | | ).setScale(2,BigDecimal.ROUND_DOWN); |
| | | BigDecimal usdtAmount = new BigDecimal( |
| | | redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WALLET_USDT_AMOUNT.getValue()) |
| | | ).setScale(2,BigDecimal.ROUND_DOWN); |
| | |
| | | if(BigDecimal.ZERO.compareTo(usdtAmount) > 0){ |
| | | return; |
| | | } |
| | | if(BigDecimal.ZERO.compareTo(coinAmount) > 0){ |
| | | return; |
| | | } |
| | | BigDecimal usdtAmountReal = usdtAmount; |
| | | BigDecimal coinAmountReal = coinAmount; |
| | | //生成一条记录 |
| | | DappHdRecord dappHdRecordAdd = new DappHdRecord(); |
| | | dappHdRecordAdd.setPrice(gfaPrice); |
| | | dappHdRecordAdd.setUsdtEvery(usdtAmountReal); |
| | | dappHdRecordAdd.setUsdtAmount(usdtAmountReal); |
| | | dappHdRecordAdd.setCoinEvery(coinAmountReal); |
| | | dappHdRecordAdd.setCoinAmount(coinAmountReal); |
| | | dappHdRecordMapper.insert(dappHdRecordAdd); |
| | | |
| | | /** |
| | | * 5%滑奖分配: |
| | | * 1%用自身质押 |
| | |
| | | //平分份数 |
| | | BigDecimal totalPercent = new BigDecimal(selfPercent + teamPercent + workPercent); |
| | | //每一份有多少 |
| | | BigDecimal divideEveryUsdt = usdtAmountReal.divide(totalPercent, 4, BigDecimal.ROUND_DOWN); |
| | | BigDecimal divideEveryUsdt = usdtAmountReal.divide(totalPercent, 8, BigDecimal.ROUND_DOWN); |
| | | //每一份有多少 |
| | | BigDecimal divideEveryCoin = coinAmountReal.divide(totalPercent, 4, BigDecimal.ROUND_DOWN); |
| | | BigDecimal divideEveryCoin = coinAmountReal.divide(totalPercent, 8, BigDecimal.ROUND_DOWN); |
| | | //1%用自身质押 |
| | | selfHdPerk(selfPercent,divideEveryUsdt,divideEveryCoin); |
| | | //3%用于团队业绩计算 |
| | |
| | | memberPerkMap.put(memberId,teamAchieveMemberSum); |
| | | } |
| | | |
| | | BigDecimal everyUsdt = multiplyDivideEveryUsdt.divide(memberPerkTotal,4,BigDecimal.ROUND_DOWN); |
| | | BigDecimal everyCoin = multiplyDivideEveryCoin.divide(memberPerkTotal,4,BigDecimal.ROUND_DOWN); |
| | | BigDecimal everyUsdt = multiplyDivideEveryUsdt.divide(memberPerkTotal,8,BigDecimal.ROUND_DOWN); |
| | | BigDecimal everyCoin = multiplyDivideEveryCoin.divide(memberPerkTotal,8,BigDecimal.ROUND_DOWN); |
| | | Set<Long> set = memberPerkMap.keySet(); // 得到所有key的集合 |
| | | for (Long memberId : set) { |
| | | //当前生效中的团队业绩 |
| | | BigDecimal amountMember = memberPerkMap.get(memberId); |
| | | //这个人实际可以分到的数量USDT |
| | | BigDecimal multiplyUsdt = amountMember.multiply(everyUsdt).setScale(4, BigDecimal.ROUND_DOWN); |
| | | BigDecimal multiplyUsdt = amountMember.multiply(everyUsdt).setScale(8, BigDecimal.ROUND_DOWN); |
| | | if(BigDecimal.ZERO.compareTo(multiplyUsdt) >= 0){ |
| | | continue; |
| | | } |
| | | //这个人实际可以分到的数量COIN |
| | | BigDecimal multiplyCoin = amountMember.multiply(everyCoin).setScale(4, BigDecimal.ROUND_DOWN); |
| | | BigDecimal multiplyCoin = amountMember.multiply(everyCoin).setScale(8, BigDecimal.ROUND_DOWN); |
| | | DappMemberEntity dappMemberEntityExit = dappMemberDao.selectById(memberId); |
| | | if(ObjectUtil.isEmpty(dappMemberEntityExit)){ |
| | | continue; |
| | |
| | | if(BigDecimal.ZERO.compareTo(amountMemberTotal) >= 0){ |
| | | return; |
| | | } |
| | | BigDecimal everyUsdt = multiplyDivideEveryUsdt.divide(amountMemberTotal,4,BigDecimal.ROUND_DOWN); |
| | | BigDecimal everyCoin = multiplyDivideEveryCoin.divide(amountMemberTotal,4,BigDecimal.ROUND_DOWN); |
| | | BigDecimal everyUsdt = multiplyDivideEveryUsdt.divide(amountMemberTotal,8,BigDecimal.ROUND_DOWN); |
| | | BigDecimal everyCoin = multiplyDivideEveryCoin.divide(amountMemberTotal,8,BigDecimal.ROUND_DOWN); |
| | | |
| | | Map<Long, List<DappAchieve>> collect = dappAchieves.stream().collect(Collectors.groupingBy(DappAchieve::getMemberId)); |
| | | Set<Long> set = collect.keySet(); // 得到所有key的集合 |
| | |
| | | //当前每个人生效中的质押总数 |
| | | BigDecimal amountMember = collect.get(memberId).stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | //这个人实际可以分到的数量USDT |
| | | BigDecimal multiplyUsdt = amountMember.multiply(everyUsdt).setScale(4, BigDecimal.ROUND_DOWN); |
| | | BigDecimal multiplyUsdt = amountMember.multiply(everyUsdt).setScale(8, BigDecimal.ROUND_DOWN); |
| | | if(BigDecimal.ZERO.compareTo(multiplyUsdt) >= 0){ |
| | | continue; |
| | | } |
| | | //这个人实际可以分到的数量COIN |
| | | BigDecimal multiplyCoin = amountMember.multiply(everyCoin).setScale(4, BigDecimal.ROUND_DOWN); |
| | | BigDecimal multiplyCoin = amountMember.multiply(everyCoin).setScale(8, BigDecimal.ROUND_DOWN); |
| | | |
| | | DappMemberEntity dappMemberEntityExit = dappMemberDao.selectById(memberId); |
| | | if(ObjectUtil.isEmpty(dappMemberEntityExit)){ |
| | |
| | | import cc.mrbird.febs.common.contants.AppContants; |
| | | import cc.mrbird.febs.common.enumerates.DataDicEnum; |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | | import cc.mrbird.febs.dapp.chain.ChainEnum; |
| | | import cc.mrbird.febs.dapp.chain.ChainService; |
| | | import cc.mrbird.febs.dapp.entity.DappAddressList; |
| | | import cc.mrbird.febs.dapp.entity.DappHdRecord; |
| | | import cc.mrbird.febs.dapp.mapper.DappAdressListDao; |
| | | import cc.mrbird.febs.dapp.mapper.DappHdRecordMapper; |
| | | import cc.mrbird.febs.dapp.mapper.DappMemberDao; |
| | | import cc.mrbird.febs.dapp.service.DappSystemService; |
| | | import cc.mrbird.febs.rabbit.producer.ChainProducer; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | |
| | | private DappSystemService dappSystemService; |
| | | @Autowired |
| | | private RedisUtils redisUtils; |
| | | @Autowired |
| | | private DappHdRecordMapper dappHdRecordMapper; |
| | | /** |
| | | * 每日定时零点计算滑点 |
| | | */ |
| | | @Scheduled(cron = "0 0 0 * * ?") |
| | | @Scheduled(cron = "0 0/5 * * * ? ") |
| | | public void mineJob() { |
| | | /** |
| | | * 定时器循环计算每个时间跨度内增加的滑点数量 |
| | | */ |
| | | log.info("滑点奖励"); |
| | | BigDecimal usdtAmount = new BigDecimal( |
| | | redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WALLET_USDT_AMOUNT.getValue()) |
| | | ).setScale(2,BigDecimal.ROUND_DOWN); |
| | | BigDecimal coinAmount = new BigDecimal( |
| | | redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WALLET_COIN_AMOUNT.getValue()) |
| | | ).setScale(2,BigDecimal.ROUND_DOWN); |
| | | if(BigDecimal.ZERO.compareTo(usdtAmount) > 0){ |
| | | return; |
| | | //获取滑点钱包的余额 |
| | | BigDecimal coinCnt = ChainService.getInstance(ChainEnum.BSC_GFA.name()).balanceOf("0x1Ea392645f816BF15f1Fc87728eA010585bAAE7D").setScale(8,BigDecimal.ROUND_DOWN); |
| | | BigDecimal coinPrice = ChainService.getInstance(ChainEnum.BSC_GFA.name()).getPrice("0x1Ea392645f816BF15f1Fc87728eA010585bAAE7D").setScale(8,BigDecimal.ROUND_DOWN); |
| | | //获取上一时刻的数据 |
| | | BigDecimal coinAmountOld =BigDecimal.ZERO; |
| | | DappHdRecord dappHdRecord = dappHdRecordMapper.selectNewRecord(); |
| | | if(ObjectUtil.isNotEmpty(dappHdRecord)){ |
| | | coinAmountOld = dappHdRecord.getCoinAmount(); |
| | | } |
| | | if(BigDecimal.ZERO.compareTo(coinAmount) > 0){ |
| | | |
| | | //更新此刻的USDT数量 |
| | | String existToken = redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WALLET_USDT_AMOUNT.getValue()); |
| | | if (StrUtil.isNotBlank(existToken)) { |
| | | redisUtils.del(existToken); |
| | | } |
| | | //这个时间段的新增余额 |
| | | //此刻的余额-上一次账户的余额 = 这个时间段的新增余额 |
| | | BigDecimal subtract = coinCnt.subtract(coinAmountOld); |
| | | //获取这个时刻的滑点入账数量 |
| | | BigDecimal multiply = coinPrice.multiply(subtract).multiply(new BigDecimal("0.97")).setScale(8,BigDecimal.ROUND_DOWN); |
| | | //更新这个时间段的滑点数量 |
| | | redisUtils.set(DataDicEnum.GFA_HUA_DIAN_WALLET_USDT_AMOUNT.getValue(), multiply, 0); |
| | | |
| | | //生成一条记录 |
| | | DappHdRecord dappHdRecordAdd = new DappHdRecord(); |
| | | dappHdRecordAdd.setPrice(coinPrice); |
| | | dappHdRecordAdd.setUsdtEvery(multiply); |
| | | dappHdRecordAdd.setCoinEvery(subtract); |
| | | dappHdRecordAdd.setCoinAmount(coinCnt); |
| | | dappHdRecordMapper.insert(dappHdRecordAdd); |
| | | |
| | | if(BigDecimal.ZERO.compareTo(subtract) >= 0){ |
| | | return; |
| | | } |
| | | dappSystemService.tradeProfitDistribute(1L); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | // System.out.println(ChainService.getInstance(ChainEnum.BSC_GFA.name()).totalSupply()); |
| | | // System.out.println(ChainService.getInstance(ChainEnum.BSC_GFA.name()).balanceOf("0x1Ea392645f816BF15f1Fc87728eA010585bAAE7D")); |
| | | System.out.println(ChainService.getInstance(ChainEnum.BSC_GFA.name()).getPrice("0x1Ea392645f816BF15f1Fc87728eA010585bAAE7D")); |
| | | } |
| | | |
| | | } |
| | |
| | | @RabbitListener(queues = QueueConstants.QUEUE_GFA_ZY_HUA_DIAN) |
| | | public void distrbProfit(Long id) { |
| | | log.info("收到滑点分配消息:{}", id); |
| | | dappSystemService.tradeProfitDistribute(id); |
| | | // dappSystemService.tradeProfitDistribute(id); |
| | | } |
| | | |
| | | @RabbitListener(queues = QueueConstants.USER_BUY_REWARD) |
| | |
| | | dapp_coin_price |
| | | order by CREATE_TIME desc |
| | | </select> |
| | | <select id="findHdRecordInPage" resultType="cc.mrbird.febs.dapp.entity.DappHdRecord"> |
| | | SELECT |
| | | * |
| | | FROM |
| | | dapp_hd_record |
| | | order by CREATE_TIME desc |
| | | </select> |
| | | |
| | | <select id="selectNewRecord" resultType="cc.mrbird.febs.dapp.entity.DappHdRecord"> |
| | | SELECT |
| | |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <span></span> |
| | | <span>点击刷新获取最新价格:</span> |
| | | <!-- <span>点击刷新获取最新价格:</span>--> |
| | | </div> |
| | | <div class="layui-input-inline"> |
| | | <span id="countdown"></span> |
| | |
| | | </script> |
| | | <script type="text/html" id="isInside"> |
| | | {{# |
| | | var isInside = { |
| | | var isInside = { |
| | | 2: {title: '外' , color: 'green'}, |
| | | 1: {title: '内', color: 'red'} |
| | | }[d.isInside]; |
| | |
| | | </script> |
| | | <script type="text/html" id="showPort"> |
| | | {{# |
| | | var showPort = { |
| | | var showPort = { |
| | | 2: {title: '手机' , color: 'green'}, |
| | | 1: {title: 'pc', color: 'red'} |
| | | }[d.showPort]; |
| | |
| | | </script> |
| | | <script type="text/html" id="isTop"> |
| | | {{# |
| | | var isTop = { |
| | | var isTop = { |
| | | 2: {title: '否', color: 'red' }, |
| | | 1: {title: '是' , color: 'green'} |
| | | }[d.isTop]; |
| | |
| | | var data = obj.data, |
| | | layEvent = obj.event; |
| | | }); |
| | | |
| | | // 刷新按钮 |
| | | $reset.on('click', function () { |
| | | getBalanceOf("0xCEBfd36e03BD80c7015Cbad17eFfBc33d2923FF3").then(amount => { |
| | | console.log("余额:"+amount); |
| | | document.getElementById('countdown').innerHTML = amount ; |
| | | |
| | | coinPriceAdd(amount); |
| | | }); |
| | | // getBalanceOf("0xf5807B8F3691bFfDf155daFdF2f0449e9F6fE423").then(amount => { |
| | | // console.log("余额:"+amount); |
| | | // // coinPriceAdd(amount); |
| | | // document.getElementById('countdownBalance').innerHTML = "余额:"+amount; |
| | | // }); |
| | | // getPrice().then(amount => { |
| | | // console.log("价格:"+amount); |
| | | // |
| | | // document.getElementById('countdownPrice').innerHTML = "价格:"+amount ; |
| | | // // coinPriceAdd(amount); |
| | | // }); |
| | | $searchForm[0].reset(); |
| | | sortObject.type = 'null'; |
| | | tableIns.reload({where: getQueryParams(), page: {curr: null}, initSort: sortObject}); |
| | |
| | | tableIns = febs.table.init({ |
| | | elem: $view.find('table'), |
| | | id: 'coinPriceTable', |
| | | url: ctx + 'admin/banner/coinPrice', |
| | | url: ctx + 'admin/banner/hdRecord', |
| | | cols: [[ |
| | | // {field: 'id', title: '', minWidth: 10,align:'left'}, |
| | | {field: 'coinAmount', title: '滑点累计币量', minWidth: 120,align:'center'}, |
| | | {field: 'coinEvery', title: '新增滑点', minWidth: 120,align:'center'}, |
| | | {field: 'price', title: '价格', minWidth: 120,align:'center'}, |
| | | {field: 'usdtEvery', title: '新增USDT', minWidth: 120,align:'center'}, |
| | | {field: 'createTime', title: '时间', minWidth: 120,align:'center'}, |
| | | ]] |
| | | }); |
| | |
| | | } |
| | | |
| | | // setInterval(() => { |
| | | // getPrice(tokens.tokenA,tokens.tokenB).then(price => { |
| | | // coinPriceAdd(price); |
| | | // getBalanceOf("0xf5807B8F3691bFfDf155daFdF2f0449e9F6fE423").then(amount => { |
| | | // coinPriceAdd(amount); |
| | | // }); |
| | | // }, 10 * 1000);//10秒一次 |
| | | //获取地址拥有的代币数量 |
| | | |
| | | |
| | | const providers = new ethers.providers.JsonRpcProvider('https://data-seed-prebsc-1-s1.bnbchain.org:8545'); |
| | | // const providers = new ethers.providers.JsonRpcProvider('https://https://bsc-testnet.public.blastapi.io/'); |
| | | // const providers = new ethers.providers.JsonRpcProvider('https://data-seed-prebsc-1-s1.bnbchain.org:8545');//正式 |
| | | const providers = new ethers.providers.JsonRpcProvider('https://bsc-testnet.public.blastapi.io/');//测试 |
| | | const contract = { |
| | | // gfaCoin: '0xaC97ff8173c41b83111b411A3Fa62D7C6ff385be',//正式 |
| | | gfaCoin: '0xB4dAA960EAbd566D495bCfaCC0453A9Baabe6D46',//测试 |
| | | }; |
| | | const gfaContract = new ethers.Contract( |
| | | contract.gfaCoin, |
| | | [ |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "string[]", |
| | | "name": "symbolParam", |
| | | "type": "string[]" |
| | | }, |
| | | { |
| | | "internalType": "address[]", |
| | | "name": "adr", |
| | | "type": "address[]" |
| | | } |
| | | ], |
| | | "stateMutability": "nonpayable", |
| | | "type": "constructor" |
| | | }, |
| | | { |
| | | "anonymous": false, |
| | | "inputs": [ |
| | | { |
| | | "indexed": true, |
| | | "internalType": "address", |
| | | "name": "owner", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "indexed": true, |
| | | "internalType": "address", |
| | | "name": "spender", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "indexed": false, |
| | | "internalType": "uint256", |
| | | "name": "value", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "Approval", |
| | | "type": "event" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "spender", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "amount", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "approve", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "bool", |
| | | "name": "", |
| | | "type": "bool" |
| | | } |
| | | ], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "anonymous": false, |
| | | "inputs": [], |
| | | "name": "AutoNukeLP", |
| | | "type": "event" |
| | | }, |
| | | { |
| | | "anonymous": false, |
| | | "inputs": [ |
| | | { |
| | | "indexed": false, |
| | | "internalType": "address", |
| | | "name": "adr", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "indexed": false, |
| | | "internalType": "uint256", |
| | | "name": "amount", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "indexed": false, |
| | | "internalType": "uint256", |
| | | "name": "price", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "indexed": false, |
| | | "internalType": "uint256", |
| | | "name": "sameCoin", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "indexed": false, |
| | | "internalType": "uint256", |
| | | "name": "finxMineCoin", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "CoinReward", |
| | | "type": "event" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "spender", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "subtractedValue", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "decreaseAllowance", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "bool", |
| | | "name": "", |
| | | "type": "bool" |
| | | } |
| | | ], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "spender", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "addedValue", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "increaseAllowance", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "bool", |
| | | "name": "", |
| | | "type": "bool" |
| | | } |
| | | ], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "startState", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "launch", |
| | | "outputs": [], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "anonymous": false, |
| | | "inputs": [ |
| | | { |
| | | "indexed": true, |
| | | "internalType": "address", |
| | | "name": "previousOwner", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "indexed": true, |
| | | "internalType": "address", |
| | | "name": "newOwner", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "OwnershipTransferred", |
| | | "type": "event" |
| | | }, |
| | | { |
| | | "anonymous": false, |
| | | "inputs": [ |
| | | { |
| | | "indexed": false, |
| | | "internalType": "address", |
| | | "name": "sender", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "indexed": false, |
| | | "internalType": "uint256", |
| | | "name": "amount", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "indexed": false, |
| | | "internalType": "uint256", |
| | | "name": "volumn", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "Pawn", |
| | | "type": "event" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "renounceOwnership", |
| | | "outputs": [], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "black", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "bool", |
| | | "name": "enable", |
| | | "type": "bool" |
| | | } |
| | | ], |
| | | "name": "setBlack", |
| | | "outputs": [], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "buyFee", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "saleFee", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "setFee", |
| | | "outputs": [], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "whiteAddr", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "bool", |
| | | "name": "enable", |
| | | "type": "bool" |
| | | } |
| | | ], |
| | | "name": "setPawnWhiteAddress", |
| | | "outputs": [], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "pawnBurnRatio", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "minRatio", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "pawnRatio", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "lpBurnRatio", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "setRates", |
| | | "outputs": [], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "mineTime", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "exchangeTime", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "burnTime", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "setTimes", |
| | | "outputs": [], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "recipient", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "amount", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "transfer", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "bool", |
| | | "name": "", |
| | | "type": "bool" |
| | | } |
| | | ], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "anonymous": false, |
| | | "inputs": [ |
| | | { |
| | | "indexed": true, |
| | | "internalType": "address", |
| | | "name": "from", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "indexed": true, |
| | | "internalType": "address", |
| | | "name": "to", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "indexed": false, |
| | | "internalType": "uint256", |
| | | "name": "value", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "Transfer", |
| | | "type": "event" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "sender", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "address", |
| | | "name": "recipient", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "amount", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "transferFrom", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "bool", |
| | | "name": "", |
| | | "type": "bool" |
| | | } |
| | | ], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "owner", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "address", |
| | | "name": "spender", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "allowance", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "account", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "balanceOf", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "decimals", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint8", |
| | | "name": "", |
| | | "type": "uint8" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getLastExchangeTime", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getLastMineTime", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getLastTimes", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256[]", |
| | | "name": "", |
| | | "type": "uint256[]" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getOwner", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getPawnVolumn", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getPrice", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "_price", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getRates", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256[]", |
| | | "name": "", |
| | | "type": "uint256[]" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getRewardAddressList", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "address[]", |
| | | "name": "", |
| | | "type": "address[]" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "adr", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "getRewardHisotryTotal", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "adr", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "getRewardHistory", |
| | | "outputs": [ |
| | | { |
| | | "components": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "amount", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "goldAmount", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "coinAmount", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "price", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "timesptemp", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "internalType": "struct Reward.RewardHistory[]", |
| | | "name": "", |
| | | "type": "tuple[]" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "adr", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "getRewardList", |
| | | "outputs": [ |
| | | { |
| | | "components": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "reward", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "amount", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "remain", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "price", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "timestemp", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "internalType": "struct Reward.RewardData[]", |
| | | "name": "", |
| | | "type": "tuple[]" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getTimes", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256[]", |
| | | "name": "", |
| | | "type": "uint256[]" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getTotalMineCnt", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getTotalRemainCnt", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "adr", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "getWaitRelease", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "addr", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "isBlackAddr", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "bool", |
| | | "name": "", |
| | | "type": "bool" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "name", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "string", |
| | | "name": "", |
| | | "type": "string" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "owner", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "symbol", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "string", |
| | | "name": "", |
| | | "type": "string" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "totalSupply", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | } |
| | | ], |
| | | providers |
| | | ); |
| | | //获取地址余额 |
| | | async function getBalanceOf(address){ |
| | | const contract = { |
| | | gfaCoin: '0x33107d4502C8C59a8b96834c76d427B67AC1d873', |
| | | }; |
| | | const gfaContract = new ethers.Contract( |
| | | contract.gfaCoin, |
| | | [ |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "string[]", |
| | | "name": "symbolParam", |
| | | "type": "string[]" |
| | | }, |
| | | { |
| | | "internalType": "address[]", |
| | | "name": "adr", |
| | | "type": "address[]" |
| | | } |
| | | ], |
| | | "stateMutability": "nonpayable", |
| | | "type": "constructor" |
| | | }, |
| | | { |
| | | "anonymous": false, |
| | | "inputs": [ |
| | | { |
| | | "indexed": true, |
| | | "internalType": "address", |
| | | "name": "owner", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "indexed": true, |
| | | "internalType": "address", |
| | | "name": "spender", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "indexed": false, |
| | | "internalType": "uint256", |
| | | "name": "value", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "Approval", |
| | | "type": "event" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "spender", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "amount", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "approve", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "bool", |
| | | "name": "", |
| | | "type": "bool" |
| | | } |
| | | ], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "anonymous": false, |
| | | "inputs": [], |
| | | "name": "AutoNukeLP", |
| | | "type": "event" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "spender", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "subtractedValue", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "decreaseAllowance", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "bool", |
| | | "name": "", |
| | | "type": "bool" |
| | | } |
| | | ], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "spender", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "addedValue", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "increaseAllowance", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "bool", |
| | | "name": "", |
| | | "type": "bool" |
| | | } |
| | | ], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "startState", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "launch", |
| | | "outputs": [], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "anonymous": false, |
| | | "inputs": [ |
| | | { |
| | | "indexed": true, |
| | | "internalType": "address", |
| | | "name": "previousOwner", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "indexed": true, |
| | | "internalType": "address", |
| | | "name": "newOwner", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "OwnershipTransferred", |
| | | "type": "event" |
| | | }, |
| | | { |
| | | "anonymous": false, |
| | | "inputs": [ |
| | | { |
| | | "indexed": false, |
| | | "internalType": "address", |
| | | "name": "sender", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "indexed": false, |
| | | "internalType": "uint256", |
| | | "name": "amount", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "indexed": false, |
| | | "internalType": "uint256", |
| | | "name": "volumn", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "Pawn", |
| | | "type": "event" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "renounceOwnership", |
| | | "outputs": [], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "mineTime", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "exchangeTime", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "burnTime", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "setTimes", |
| | | "outputs": [], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "recipient", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "amount", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "transfer", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "bool", |
| | | "name": "", |
| | | "type": "bool" |
| | | } |
| | | ], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "anonymous": false, |
| | | "inputs": [ |
| | | { |
| | | "indexed": true, |
| | | "internalType": "address", |
| | | "name": "from", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "indexed": true, |
| | | "internalType": "address", |
| | | "name": "to", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "indexed": false, |
| | | "internalType": "uint256", |
| | | "name": "value", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "Transfer", |
| | | "type": "event" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "sender", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "address", |
| | | "name": "recipient", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "amount", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "name": "transferFrom", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "bool", |
| | | "name": "", |
| | | "type": "bool" |
| | | } |
| | | ], |
| | | "stateMutability": "nonpayable", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "owner", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "address", |
| | | "name": "spender", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "allowance", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "account", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "balanceOf", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "decimals", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint8", |
| | | "name": "", |
| | | "type": "uint8" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getLastExchangeTime", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getLastMineTime", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getOwner", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getPawnVolumn", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getPrice", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "_price", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getRewardAddressList", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "address[]", |
| | | "name": "", |
| | | "type": "address[]" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "adr", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "getRewardHisotryTotal", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "adr", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "getRewardHistory", |
| | | "outputs": [ |
| | | { |
| | | "components": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "amount", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "goldAmount", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "coinAmount", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "price", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "timesptemp", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "internalType": "struct Reward.RewardHistory[]", |
| | | "name": "", |
| | | "type": "tuple[]" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "adr", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "getRewardList", |
| | | "outputs": [ |
| | | { |
| | | "components": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "reward", |
| | | "type": "address" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "amount", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "remain", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "price", |
| | | "type": "uint256" |
| | | }, |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "timestemp", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "internalType": "struct Reward.RewardData[]", |
| | | "name": "", |
| | | "type": "tuple[]" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getTotalMineCnt", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "getTotalRemainCnt", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "adr", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "name": "getWaitRelease", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "name", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "string", |
| | | "name": "", |
| | | "type": "string" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "owner", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "address", |
| | | "name": "", |
| | | "type": "address" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "symbol", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "string", |
| | | "name": "", |
| | | "type": "string" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | }, |
| | | { |
| | | "inputs": [], |
| | | "name": "totalSupply", |
| | | "outputs": [ |
| | | { |
| | | "internalType": "uint256", |
| | | "name": "", |
| | | "type": "uint256" |
| | | } |
| | | ], |
| | | "stateMutability": "view", |
| | | "type": "function" |
| | | } |
| | | ], |
| | | providers |
| | | ); |
| | | const amounts = await gfaContract.balanceOf(address);//获取余额 |
| | | const decimals = await gfaContract.decimals();//获取精度 |
| | | return (amounts.toString()/10 ** decimals).toString(); |
| | | } |
| | | //获取价格 |
| | | async function getPrice(){ |
| | | const price = await gfaContract.getPrice();//获取价格 |
| | | const decimals = await gfaContract.decimals();//获取精度 |
| | | // await gfaContract.allowance(0xCEBfd36e03BD80c7015Cbad17eFfBc33d2923FF3,1000000); |
| | | // // return amounts.toString()/1e18; |
| | | // |
| | | // return (amounts.toString()/10 ** decimals).toString() +",价格:"+ price/10 ** decimals; |
| | | return ( price/10 ** decimals).toString(); |
| | | } |
| | | // setInterval(() => { |
| | |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | |
| | | <blockquote class="layui-elem-quote blue-border">滑点设置</blockquote> |
| | | <div class="layui-row layui-col-space10 layui-form-item"> |
| | | <!-- <blockquote class="layui-elem-quote blue-border">滑点设置</blockquote>--> |
| | | <!-- <div class="layui-row layui-col-space10 layui-form-item">--> |
| | | <!--<!– <div class="layui-col-lg6">–>--> |
| | | <!--<!– <label class="layui-form-label febs-form-item-require">钱包GFA:</label>–>--> |
| | | <!--<!– <div class="layui-input-block">–>--> |
| | | <!--<!– <input type="text" name="coinAmount" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">–>--> |
| | | <!--<!– </div>–>--> |
| | | <!--<!– <div class="layui-word-aux" style="margin-left: 150px;">GFA滑点钱包的GFA数量</div>–>--> |
| | | <!--<!– </div>–>--> |
| | | <!-- <div class="layui-col-lg6">--> |
| | | <!-- <label class="layui-form-label febs-form-item-require">钱包GFA:</label>--> |
| | | <!-- <label class="layui-form-label febs-form-item-require">钱包USDT:</label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <input type="text" name="coinAmount" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">--> |
| | | <!-- <input type="text" name="usdtAmount" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">--> |
| | | <!-- </div>--> |
| | | <!-- <div class="layui-word-aux" style="margin-left: 150px;">GFA滑点钱包的GFA数量</div>--> |
| | | <!-- <div class="layui-word-aux" style="margin-left: 150px;">GFA滑点钱包的USDT数量</div>--> |
| | | <!-- </div>--> |
| | | <div class="layui-col-lg6"> |
| | | <label class="layui-form-label febs-form-item-require">钱包USDT:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="usdtAmount" lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | <div class="layui-word-aux" style="margin-left: 150px;">GFA滑点钱包的USDT数量</div> |
| | | </div> |
| | | </div> |
| | | <!-- </div>--> |
| | | <div class="layui-row layui-col-space10 layui-form-item"> |
| | | <div class="layui-col-lg6"> |
| | | <label class="layui-form-label febs-form-item-require">滑点级数:</label> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="layui-card-footer"> |
| | | <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="coin-set-form-hdSubmit" id="hdSubmit">释放每日滑点</button> |
| | | <!-- <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="coin-set-form-hdSubmit" id="hdSubmit">释放每日滑点</button>--> |
| | | <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="coin-set-form-submit" id="submit">保存</button> |
| | | </div> |
| | | </div> |
| | |
| | | return false; |
| | | }); |
| | | |
| | | $hdSubmit.on('click', function () { |
| | | febs.modal.confirm('确认释放滑点', '确认释放滑点?', function () { |
| | | febs.post(ctx + 'admin/banner/hdSubmit', function () { |
| | | febs.alert.success('操作成功'); |
| | | }); |
| | | }); |
| | | }); |
| | | // $hdSubmit.on('click', function () { |
| | | // febs.modal.confirm('确认释放滑点', '确认释放滑点?', function () { |
| | | // febs.post(ctx + 'admin/banner/hdSubmit', function () { |
| | | // febs.alert.success('操作成功'); |
| | | // }); |
| | | // }); |
| | | // }); |
| | | }); |
| | | </script> |