| | |
| | | package cc.mrbird.febs.dapp.contract.andao; |
| | | |
| | | import cc.mrbird.febs.common.contants.AppContants; |
| | | import cc.mrbird.febs.common.contants.SystemConstants; |
| | | import cc.mrbird.febs.common.service.RedisService; |
| | | import cc.mrbird.febs.dapp.entity.DappFundFlowEntity; |
| | |
| | | import org.web3j.utils.Convert; |
| | | |
| | | import java.math.BigInteger; |
| | | import java.util.List; |
| | | |
| | | |
| | | @Component |
| | |
| | | return Web3j.build(httpService); |
| | | } |
| | | |
| | | private static Web3j getInstanceScopes() { |
| | | |
| | | HttpService httpService = new HttpService(blockchainNode); |
| | | return Web3j.build(httpService); |
| | | } |
| | | |
| | | // 区块链节点地址 TODO |
| | | // private static String blockchainNode = "https://bsc-dataseed.binance.org"; |
| | | private static String blockchainNode = "https://bsc-dataseed1.ninicoin.io"; |
| | | |
| | | // 合约地址 TODO |
| | | // private static String contractAddr = "0xb5a1aC0fA05BFb8ad16B231e84b0bAC1d46eAfD0";//测试 |
| | | private static String contractAddr = "0x99A08A65DB5542f35b96FD69F01896Bd3cDB9DC4"; |
| | | private static String contractAddr = "0xbE8470ff4cF69eb6F2923aE3A8B29f58Ea81cEb0"; |
| | | |
| | | // 操作账号 手续费钱包地址的私钥(合约里会把手续费转到你这个私钥地址上) 用于操作合约内方法 TODO |
| | | private static String privateKey = "3ff7147104fcc4b3e47eef1c6a826107ad13f8ceaf46d6747b7cd4e56f8b01c6";//测试 |
| | | |
| | | // private static String privateKey = AppContants.FEE_ADDRESS_KEY.get("feeAddressKey").toString() ; |
| | | private static String privateKey = AppContants.FEE_ADDRESS_KEY.get("feeAddressKey").toString() ; |
| | | |
| | | private EthFilter getFilter(BigInteger startBlock) { |
| | | if (startBlock != null) { |
| | |
| | | |
| | | // TODO 业务操作逻辑代码 |
| | | System.out.println("from:"+from+",amount:"+amount+",regFlow:"+regFlow); |
| | | chainProducer.sendContractAnDao(Long.parseLong(regFlow)); |
| | | // chainProducer.sendContractAnDao(Long.parseLong(regFlow)); |
| | | //投注人 |
| | | // DappMemberEntity dappMemberEntity = dappMemberDao.selectByAddress(from, "BSC"); |
| | | // if(ObjectUtil.isNotEmpty(dappMemberEntity)){ |
| | |
| | | System.out.println("启动投注监听事件"); |
| | | // 指定密钥文件并进行账号和密码的验证 |
| | | Credentials credentials = Credentials.create(privateKey); |
| | | Abi contract = Abi.load(contractAddr, getInstanceScope(), credentials, new DefaultGasProvider()); |
| | | Abi contract = Abi.load(contractAddr, getInstanceScopes(), credentials, new DefaultGasProvider()); |
| | | EthFilter filter = getFilter(startBlock); |
| | | contract.withdrawnEventFlowable(filter).subscribe(e->{ |
| | | try { |
| | | // 更新区块编号 TODO |
| | | if(ObjectUtil.isEmpty(e.log.getBlockNumber())){ |
| | | redisService.set("BNB_BLOCK_NUMBER",startBlock.intValue()); |
| | | }else{ |
| | | redisService.set("BNB_BLOCK_NUMBER",e.log.getBlockNumber().intValue()); |
| | | } |
| | | redisService.set("BNB_BLOCK_NUMBER",e.log.getBlockNumber().intValue()); |
| | | }catch (Exception exception) { |
| | | exception.printStackTrace(); |
| | | } |
| | |
| | | } |
| | | return transactionHash; |
| | | } |
| | | // /** |
| | | // * 初始化合约地址 |
| | | // */ |
| | | // public String setAddress(List<String> list){ |
| | | // String transactionHash = null; |
| | | // Credentials credentials = Credentials.create(privateKey); |
| | | // Abi contract = Abi.load(contractAddr, getInstance(), credentials, getStaticGasProvider()); |
| | | // try { |
| | | // //BigInteger bigInteger = Convert.toWei(amount.toString(), Convert.Unit.ETHER).toBigInteger(); |
| | | // TransactionReceipt send = contract.initializeAddresses(list).send(); |
| | | // if(ObjectUtil.isNotEmpty(send)){ |
| | | // transactionHash = send.getTransactionHash(); |
| | | // } |
| | | // } catch (Exception exception) { |
| | | // exception.printStackTrace(); |
| | | // } |
| | | // return transactionHash; |
| | | // } |
| | | |
| | | public static void main(String[] args) { |
| | | AndaoContractMain andaoContractMain = new AndaoContractMain(); |