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, ¤tBlock, "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