فهرست منبع

自适应GasPrice

skyfffire 2 سال پیش
والد
کامیت
7a6d963331
3فایلهای تغییر یافته به همراه35 افزوده شده و 24 حذف شده
  1. 7 23
      arbitrage/api.go
  2. 1 1
      arbitrage/history.go
  3. 27 0
      arbitrage/utils.go

+ 7 - 23
arbitrage/api.go

@@ -43,7 +43,7 @@ func (h *HistoryArbitrage) callReturnRealResult(a abi.ABI, from string, to strin
 	return realResult, nil
 }
 
-func (h *HistoryArbitrage) SendTest(e *EasyWallet) {
+func (h *HistoryArbitrage) sendTest(e *EasyWallet) {
 	ctx := context.Background()
 	blockOrNbr := rpc.BlockNumberOrHashWithNumber(rpc.PendingBlockNumber)
 
@@ -55,7 +55,11 @@ func (h *HistoryArbitrage) SendTest(e *EasyWallet) {
 	}
 
 	gasLimit := hexutil.Uint64(uint64(21000))
-	gasPrice := hexutil.Big(*big.NewInt(30 * 1e9))
+	gasPrice, err := h.ethereumApi.GasPrice(ctx)
+	if err != nil {
+		HistoryError("Get gas price error.", "error", err.Error())
+		return
+	}
 	callData := hexutil.Bytes{}
 	value := hexutil.Big(*big.NewInt(1))
 	fromAddr := e.account.Address
@@ -64,7 +68,7 @@ func (h *HistoryArbitrage) SendTest(e *EasyWallet) {
 	sendArgs := ethapi.SendTxArgs{
 		Nonce:    nonce,
 		Gas:      &gasLimit,
-		GasPrice: &gasPrice,
+		GasPrice: gasPrice,
 		Data:     &callData,
 		Value:    &value,
 		From:     fromAddr,
@@ -79,23 +83,3 @@ func (h *HistoryArbitrage) SendTest(e *EasyWallet) {
 
 	HistoryInfo("Send ok.", "hash", hash)
 }
-
-func GetFinalParams(params []interface{}) []interface{} {
-	var finalParams []interface{}
-
-	for _, value := range params {
-		if intValue, ok := value.(int); ok {
-			finalParams = append(finalParams, big.NewInt(int64(intValue)))
-		} else {
-			finalParams = append(finalParams, value)
-		}
-	}
-
-	return finalParams
-}
-
-func FinalPack(a abi.ABI, method string, params ...interface{}) (hexutil.Bytes, error) {
-	data, err := a.Pack(method, params...)
-
-	return data, err
-}

+ 1 - 1
arbitrage/history.go

@@ -93,7 +93,7 @@ func (h *HistoryArbitrage) run() {
 	h.setupWallets()
 
 	// 交易发送测试
-	h.SendTest(h.wallets[0])
+	h.sendTest(h.wallets[0])
 
 running:
 	for {

+ 27 - 0
arbitrage/utils.go

@@ -0,0 +1,27 @@
+package arbitrage
+
+import (
+	"github.com/ethereum/go-ethereum/accounts/abi"
+	"github.com/ethereum/go-ethereum/common/hexutil"
+	"math/big"
+)
+
+func GetFinalParams(params []interface{}) []interface{} {
+	var finalParams []interface{}
+
+	for _, value := range params {
+		if intValue, ok := value.(int); ok {
+			finalParams = append(finalParams, big.NewInt(int64(intValue)))
+		} else {
+			finalParams = append(finalParams, value)
+		}
+	}
+
+	return finalParams
+}
+
+func FinalPack(a abi.ABI, method string, params ...interface{}) (hexutil.Bytes, error) {
+	data, err := a.Pack(method, params...)
+
+	return data, err
+}