From c10d97a689669d464e0bc7f0dc81544ba73d4dda Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 28 Jul 2023 14:10:52 +0800
Subject: [PATCH] 智能合约

---
 src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractMain.java |   50 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 45 insertions(+), 5 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractMain.java b/src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractMain.java
index 5d991dc..230a79a 100644
--- a/src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractMain.java
+++ b/src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractMain.java
@@ -1,5 +1,6 @@
 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;
@@ -24,6 +25,7 @@
 import org.web3j.utils.Convert;
 
 import java.math.BigInteger;
+import java.util.List;
 
 
 @Component
@@ -86,12 +88,10 @@
 
     // 合约地址 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) {
@@ -160,7 +160,29 @@
             }catch (Exception exception) {
                 exception.printStackTrace();
             }
-        });
+        },
+                error -> System.out.println("onError: " + error),
+                () -> System.out.println("onComplete will not be printed!")
+        );
+    }
+
+    public void listenBettings(BigInteger startBlock){
+        System.out.println("启动投注监听事件");
+        // 指定密钥文件并进行账号和密码的验证
+        Credentials credentials = Credentials.create(privateKey);
+        Abi contract = Abi.load(contractAddr, getInstanceScope(), credentials, new DefaultGasProvider());
+        EthFilter filter = getFilter(startBlock);
+        contract.withdrawnEventFlowable(filter).subscribe(e->{
+            try {
+                // 更新区块编号 TODO
+                redisService.set("BNB_BLOCK_NUMBER",e.log.getBlockNumber().intValue());
+            }catch (Exception exception) {
+                exception.printStackTrace();
+            }
+        },
+                error -> System.out.println("onError: " + error),
+                () -> System.out.println("onComplete will not be printed!")
+        );
     }
 
     /**
@@ -181,6 +203,24 @@
         }
         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();

--
Gitblit v1.9.1