From 2e81cdbfd9c9c0bbf23715b5ca2d88a52a3885f4 Mon Sep 17 00:00:00 2001
From: leonardchinonso <36096513+leonardchinonso@users.noreply.github.com>
Date: Wed, 16 Mar 2022 23:21:05 +0100
Subject: [PATCH] Feature/add getlogs to devnet tool (#3722)

* adding eth_getLogs functionality for contract events for the devnet tool

* Made changes to fix double hashing

* Fixed lint errors

* Changed strings.Replace to strings.ReplaceAll for replacing strings

* Cleaned up print statements across files

* Fixed logs not being populated in result typee.go

Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>
---
 accounts/abi/bind/backends/simulated.go |  2 --
 cmd/devnettest/commands/block.go        | 10 ----------
 cmd/devnettest/commands/root.go         |  5 -----
 cmd/devnettest/requests/requests.go     |  7 +++----
 cmd/devnettest/requests/utils.go        |  4 ++--
 cmd/rpctest/rpctest/type.go             |  6 +++++-
 6 files changed, 10 insertions(+), 24 deletions(-)

diff --git a/accounts/abi/bind/backends/simulated.go b/accounts/abi/bind/backends/simulated.go
index 5c9e8e4fd2..a04bcb9149 100644
--- a/accounts/abi/bind/backends/simulated.go
+++ b/accounts/abi/bind/backends/simulated.go
@@ -593,7 +593,6 @@ func (b *SimulatedBackend) EstimateGas(ctx context.Context, call ethereum.CallMs
 
 		snapshot := b.pendingState.Snapshot()
 		res, err := b.callContract(ctx, call, b.pendingBlock, b.pendingState)
-		fmt.Printf("err %+v\n", err)
 		b.pendingState.RevertToSnapshot(snapshot)
 
 		if err != nil {
@@ -635,7 +634,6 @@ func (b *SimulatedBackend) EstimateGas(ctx context.Context, call ethereum.CallMs
 				return 0, result.Err
 			}
 			// Otherwise, the specified gas cap is too low
-			fmt.Println("sim.go")
 			return 0, fmt.Errorf("gas required exceeds allowance (%d)", cap)
 		}
 	}
diff --git a/cmd/devnettest/commands/block.go b/cmd/devnettest/commands/block.go
index 9007ab8792..d2e8d1cb02 100644
--- a/cmd/devnettest/commands/block.go
+++ b/cmd/devnettest/commands/block.go
@@ -60,8 +60,6 @@ var sendTxCmd = &cobra.Command{
 			return fmt.Errorf("tx type to create must either be 'contract' or 'regular'")
 		}
 		if txType == "regular" {
-			fmt.Println(sendAddr)
-			fmt.Println(sendValue)
 			if sendValue == 0 {
 				return fmt.Errorf("value must be > 0")
 			}
@@ -91,9 +89,6 @@ var sendTxCmd = &cobra.Command{
 			_ = searchBlockForTx(*hash)
 		}
 
-		fmt.Printf("subscription contract, transactOps: %+v, %+v\n", subscriptionContract, transactOpts)
-
-		// TODO: call eth_getLogs on address and this block number
 		if err := emitEventAndGetLogs(subscriptionContract, transactOpts, address); err != nil {
 			panic(err)
 		}
@@ -152,7 +147,6 @@ func searchBlockForTx(txnHash common.Hash) uint64 {
 	url := "ws://127.0.0.1:8545"
 	client, clientErr := rpc.DialWebsocket(context.Background(), url, "")
 	if clientErr != nil {
-		fmt.Println("error connecting to socket", clientErr)
 		panic(clientErr)
 	}
 	fmt.Println()
@@ -160,7 +154,6 @@ func searchBlockForTx(txnHash common.Hash) uint64 {
 
 	blockN, err := subscribe(client, "eth_newHeads", txnHash)
 	if err != nil {
-		fmt.Println("error occurred while subscribing", err)
 		panic(err)
 	}
 
@@ -218,7 +211,6 @@ func blockHasHash(client *rpc.Client, hash common.Hash, blockNumber string) (uin
 	var currentBlock Block
 	err := client.CallContext(ctx, &currentBlock, "eth_getBlockByNumber", blockNumber, false)
 	if err != nil {
-		fmt.Println("can't get latest block:", err)
 		return uint64(0), false, err
 	}
 
@@ -243,7 +235,6 @@ func emitEventAndGetLogs(subContract *contracts.Subscription, opts *bind.Transac
 
 	tx, err := subContract.Fallback(opts, []byte{})
 	if err != nil {
-		fmt.Printf("error 3: %+v\n", err)
 		panic(err)
 	}
 
@@ -260,7 +251,6 @@ func emitEventAndGetLogs(subContract *contracts.Subscription, opts *bind.Transac
 	blockN := searchBlockForTx(*hash)
 
 	if err = requests.GetLogs(reqId, blockN, blockN, address); err != nil {
-		fmt.Printf("error 4: %+v\n", err)
 		panic(err)
 	}
 
diff --git a/cmd/devnettest/commands/root.go b/cmd/devnettest/commands/root.go
index d0113d906a..22dc56cd9c 100644
--- a/cmd/devnettest/commands/root.go
+++ b/cmd/devnettest/commands/root.go
@@ -28,9 +28,4 @@ func Execute() error {
 
 func clearDevDB() {
 	fmt.Printf("Clearing ~/dev\n")
-	//
-	//_, err := exec.Command("rm", "-rf", "~/dev", "~/dev2").Output()
-	//if err != nil {
-	//	fmt.Println(err)
-	//}
 }
diff --git a/cmd/devnettest/requests/requests.go b/cmd/devnettest/requests/requests.go
index 11444fc031..640dad534b 100644
--- a/cmd/devnettest/requests/requests.go
+++ b/cmd/devnettest/requests/requests.go
@@ -79,14 +79,13 @@ func ParityList(reqId int, account common.Address, quantity int, offset []byte,
 
 func GetLogs(reqId int, fromBlock, toBlock uint64, address common.Address) error {
 	reqGen := initialiseRequestGenerator(reqId)
-	var b rpctest.Log
+	var b rpctest.EthGetLogs
 
-	reqq := reqGen.getLogs(fromBlock, toBlock, address)
-	res := reqGen.Erigon("eth_getLogs", reqq, &b)
+	res := reqGen.Erigon("eth_getLogs", reqGen.getLogs(fromBlock, toBlock, address), &b)
 	if res.Err != nil {
 		return fmt.Errorf("Error fetching logs: %v\n", res.Err)
 	}
 
-	fmt.Printf("Logs and events: %v\n", parseResponse(b))
+	fmt.Printf("Logs: %v\n", parseResponse(b))
 	return nil
 }
diff --git a/cmd/devnettest/requests/utils.go b/cmd/devnettest/requests/utils.go
index f751ca602d..7401798bce 100644
--- a/cmd/devnettest/requests/utils.go
+++ b/cmd/devnettest/requests/utils.go
@@ -12,17 +12,17 @@ import (
 )
 
 func post(client *http.Client, url, request string, response interface{}) error {
-	fmt.Printf("Request=%s\n", request)
-	log.Info("Getting", "url", url, "request", request)
 	start := time.Now()
 	r, err := client.Post(url, "application/json", strings.NewReader(request))
 	if err != nil {
 		return err
 	}
 	defer r.Body.Close()
+
 	if r.StatusCode != 200 {
 		return fmt.Errorf("status %s", r.Status)
 	}
+
 	decoder := json.NewDecoder(r.Body)
 	err = decoder.Decode(response)
 	log.Info("Got in", "time", time.Since(start).Seconds())
diff --git a/cmd/rpctest/rpctest/type.go b/cmd/rpctest/rpctest/type.go
index ad3df795f9..2699548e18 100644
--- a/cmd/rpctest/rpctest/type.go
+++ b/cmd/rpctest/rpctest/type.go
@@ -2,7 +2,6 @@ package rpctest
 
 import (
 	"fmt"
-
 	"github.com/ledgerwatch/erigon/common"
 	"github.com/ledgerwatch/erigon/common/hexutil"
 	"github.com/ledgerwatch/erigon/core/state"
@@ -234,6 +233,11 @@ type EthGetProof struct {
 	Result AccountResult `json:"result"`
 }
 
+type EthGetLogs struct {
+	CommonResponse
+	Result []Log `json:"result"`
+}
+
 // Result structs for GetProof
 type AccountResult struct {
 	Address      common.Address  `json:"address"`
-- 
GitLab