Commit Graph

931 Commits

Author SHA1 Message Date
Mark Holt
714c259acc
Bor waypoint storage (#9793)
Implementation of db and snapshot storage for additional synced hiemdall
waypoint types

* Checkpoint
* Milestones

This is targeted at the Astrid downloader which uses waypoints to verify
headers during syncing and fork choice selection.

Post milestones for heimdall these types are currently downloaded by
erigon but not persisted locally. This change adds persistence for these
types.

In addition to the pure persistence changes this PR also contains a
refactor step which is part of the process of extracting polygon related
types from erigon core into a seperate package which may eventually be
extracted to a separate module and possibly repo.

The aim is rather than the core `turbo\snapshotsync\freezeblocks` having
to know about types it manages and how to exaract and index their
contents this can concern it self with a set of macro shard management
actions.

This process is partially completed by this PR, a final step will be to
remove BorSnapshots and to simplify the places in the code which has to
remeber to deal with them. This requires further testing so has been
left out of this PR to avoid delays in delivering the base types.

# Status

* Waypont types and storage are complete and integrated in to the
BorHeimdall stage, The code has been tested to check that types are
inserted into mdbx, extracted and merged correctly
* I have verified that when produced from block 0 the new snapshot
correctly follow the merging strategy of existing snapshots
* The functionality is enables by a **--bor.waypoints=true** this is
false by default.

# Testing

This has been tested as follows:

* Run a Mumbai instance to the tip and check current processing for
milestones and checkpoints

# Post merge steps

* Produce and release snapshots for mumbai and bor mainnet
* Check existing node upgrades
* Remove --bor.waypoints flags
2024-04-29 18:31:51 +01:00
Alex Sharov
a5270bccf5
RPC: --http.dbg.single=true and custom HTTP header dbg: true (#10039)
- Added method `tx.Context()` - because Tx already bounded to context by
`db.BeginRo(ctx)`
- Removed ctx parameter from `BlockWithSenders` method in interfaces
- Added `dbg.ToContext()` and `dbg.Enabled(ctx)` methods to set/get
debugging tag to `ctx`.

Added way to debug single http request: 
To print more detailed logs for 1 request - add `--http.dbg.single=true`
flag. Then can send HTTP header `"dbg: true"`:

```
curl -X POST -H "dbg: true" -H "Content-Type: application/json" --data '{"jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id":1}' localhost:8545
```

---------

Co-authored-by: battlmonstr <battlmonstr@users.noreply.github.com>
2024-04-26 09:01:30 +07:00
crebsy
17da5dd6c4
New overlays feature for doing ad-hoc simulations of existing contracts with modified bytecode (#9438)
In this PR I'm introducing so-called `overlays` for doing ad-hoc state
simulations of contracts which replay the state with a modified bytecode
for any given block range.

The new feature adds two new RPC methods: `overlay_callConstructor` and
`overlay_getLogs`

I've also added a few bench tests and a new postman collection which
checks both new methods for the WETH contract in original and modified
version.

## Motivation
Overlays allow you to add your custom logic to already deployed
contracts and simulate on top of them. With overlays you can create new
view functions, modify existing ones, change field visibility, emit new
events and query the historical data of any contract with your modified
source code.

Similar commercial products exist in the space and I believe making this
feature opensource in erigon will make it easier for everyone to tinker
with it and build new cool things on top of it 

## Usage
1) compile your contract to obtain the new deployment bytecode, append
the constructor args at the end, if any
2) call `overlay_callConstructor` with the result from 1) to receive the
runtime bytecode
3) call `overlay_getLogs` to simulate new logs, passing 2) as state
overrides
([example](https://github.com/crebsy/erigon/blob/devel/cmd/rpcdaemon/postman/Overlay_Testing.json))
4) call `eth_call` to simulate new view function calls passing 2) as
state overrides

## Ad-hoc query performance & historical back-filling
The current implementation for ad-hoc range queries of `overlay_getLogs`
is optimized so that irrelevant blocks are skipped entirely from the
simulation context. This can lead to very fast results of a few minutes
or even seconds for simulating the entire historical logs of a contract
which makes any infra for back-filling redundant. However, such
shortcuts are only effectively working for contracts which are not
touching too many blocks of the chain's history. So depending on the
contract you're trying to patch, you still might need to create a custom
back-filling script which simulates the new logs with e.g. 1000 or 10000
block ranges.

As a reference for a "busy" contract the simulation rate for the
[Uniswap V2 router
](https://etherscan.io/address/0x7a250d5630b4cf539739df2c5dacb4c659f2488d#code)
was ~ 280 blocks/s on a host with 24 cores. So while small block ranges
returned relatively quickly, the simulation of the entire historical
logs for this contract took a few hours on a single node.

I'm not collecting any perf metrics yet for this but this could be
easily added in the future for tracking better implementations and
insights about contract <-> block distribution.

## Configuration
1) Enable the `ots,overlay` api namespaces by adding it to the
`--http.api` flag

2) The implementation of `overlay_getLogs` is parallelized so it's good
practice to increase the `--db.read.concurrency` to a higher value, e.g.
256 so other erigon goroutines are not getting blocked.


## Supported networks
Tested with ethereum and polygon nodes
2024-04-07 16:36:19 +02:00
Giulio rebuffo
35071744a5
[Caplin Archive node]: full sepolia read experiment bug fixes (#9393)
Bugs fixed:
* CurrentEpochAttestations misbehaviour near genesis.
* Fixed Participation indices at the Altair Fork Boundary.
* Confusing logs demoted to DBUG
* Added 6 slots of margin of error for the forward downloader
* Fixed nil exception in exits processing
* Keep 1 state in the hot storage for reorgs at all costs
* Fixed `make len: out range`
2024-02-09 22:25:48 +01:00
milen
4f76c6d3b2
turbo/jsonrpc: add support for bor state sync txn in Trace API endpoints (#9276)
Relates to: https://github.com/ledgerwatch/erigon/issues/7504

High-level changes:

- add support for bor state sync txn in Trace API endpoints
- refactor some code in `polygon/tracer` pkg for better re-usability of
common logic between Trace and Debug APIs
- tidy up some old code that is no longer needed
- handle some missed err-s and fix some misaligned stream writes
(invalid json cases) in err paths

Tests:
I've tested majority of the Trace API endpoints (trace_transaction,
trace_block, trace_filter, trace_replayTransaction,
trace_replayBlockTransactions) both with a bor state sync transaction
and with a normal one.

Here is an example of how the response of `trace_transaction` looks like
for a bor state sync transaction:
```
curl http://localhost:9545/ \
  -X POST \
  -H "Content-Type: application/json" \
  --data '{"method":"trace_transaction","params":["0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558"],"id":1,"jsonrpc":"2.0"}'  | jq

{
 "jsonrpc": "2.0",
 "id": 1,
 "result": [
   {
     "action": {
       "from": "0xfffffffffffffffffffffffffffffffffffffffe",
       "callType": "call",
       "gas": "0x0",
       "input": "0x",
       "to": "0x0000000000000000000000000000000000001001",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x0",
       "output": "0x"
     },
     "subtraces": 13,
     "traceAddress": [],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xfffffffffffffffffffffffffffffffffffffffe",
       "callType": "call",
       "gas": "0x1c962d0",
       "input": "0x19494a170000000000000000000000000000000000000000000000000000000062bd557500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000147f9014483215cab94a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aab9010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000dcbeac120c51030a911a93895f7b431e5952cee6000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000001550f7dca70000a00ce8ccdb67a7cfd5421bfb4438e2dc1fa7d2321161fadf4e5f3fe9bb0bb3ba5882011e8331333700000000000000000000000000000000000000000000000000",
       "to": "0x0000000000000000000000000000000000001001",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x102de",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
     },
     "subtraces": 1,
     "traceAddress": [
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x0000000000000000000000000000000000001001",
       "callType": "call",
       "gas": "0x4c4b40",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cab0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000dcbeac120c51030a911a93895f7b431e5952cee6000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000001550f7dca70000",
       "to": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xb9d0",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "delegatecall",
       "gas": "0x4b0577",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cab0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000dcbeac120c51030a911a93895f7b431e5952cee6000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000001550f7dca70000",
       "to": "0xa40fc0782bee28dd2cf8cb4ac2ecdb05c537f1b5",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xa4ad",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "call",
       "gas": "0x49b56c",
       "input": "0xcf2c52cb000000000000000000000000dcbeac120c51030a911a93895f7b431e5952cee600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000001550f7dca70000",
       "to": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x7fd0",
       "output": "0x"
     },
     "subtraces": 0,
     "traceAddress": [
       0,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xfffffffffffffffffffffffffffffffffffffffe",
       "callType": "call",
       "gas": "0x1c962d0",
       "input": "0x19494a170000000000000000000000000000000000000000000000000000000062bd557500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000147f9014483215cac94a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aab9010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000001b02ada9a41d8541441730ee43ea7d0effccaad9000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000002386f26fc10000a0c3a451b6d6cc319dcd797ac05887692fe44d63dc38b6322e563a3337fe6f305f82014a8331333700000000000000000000000000000000000000000000000000",
       "to": "0x0000000000000000000000000000000000001001",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x102de",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
     },
     "subtraces": 1,
     "traceAddress": [
       1
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x0000000000000000000000000000000000001001",
       "callType": "call",
       "gas": "0x4c4b40",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cac0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000001b02ada9a41d8541441730ee43ea7d0effccaad9000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000002386f26fc10000",
       "to": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xb9d0",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       1,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "delegatecall",
       "gas": "0x4b0577",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cac0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000001b02ada9a41d8541441730ee43ea7d0effccaad9000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000002386f26fc10000",
       "to": "0xa40fc0782bee28dd2cf8cb4ac2ecdb05c537f1b5",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xa4ad",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       1,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "call",
       "gas": "0x49b56c",
       "input": "0xcf2c52cb0000000000000000000000001b02ada9a41d8541441730ee43ea7d0effccaad900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000002386f26fc10000",
       "to": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x7fd0",
       "output": "0x"
     },
     "subtraces": 0,
     "traceAddress": [
       1,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xfffffffffffffffffffffffffffffffffffffffe",
       "callType": "call",
       "gas": "0x1c962b4",
       "input": "0x19494a170000000000000000000000000000000000000000000000000000000062bd557500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000185f9018283215cad948397259c983751daf40400790063935a11afa28ab9014000000000000000000000000003c545163bd114d756c65dda1d97d37b89da2236000000000000000000000000cd1c7c85113b16a5b9e09576112d162281b5f860000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000931eb9d2e9b0e496aac1dcdf778399ad762e3739000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000e3000000000000000000000000000000000000000000000000000000000000007700000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a0c346dbd1115e4a8a70c678e2dfad37318035a5f36d5bad652a985d1b3e90dd006483313337000000000000000000000000000000000000000000000000000000",
       "to": "0x0000000000000000000000000000000000001001",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x1dc19",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
     },
     "subtraces": 1,
     "traceAddress": [
       2
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x0000000000000000000000000000000000001001",
       "callType": "call",
       "gas": "0x4c4b40",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cad0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000014000000000000000000000000003c545163bd114d756c65dda1d97d37b89da2236000000000000000000000000cd1c7c85113b16a5b9e09576112d162281b5f860000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000931eb9d2e9b0e496aac1dcdf778399ad762e3739000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000e3000000000000000000000000000000000000000000000000000000000000007700000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000",
       "to": "0x8397259c983751daf40400790063935a11afa28a",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x191db",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       2,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x8397259c983751daf40400790063935a11afa28a",
       "callType": "call",
       "gas": "0x4af990",
       "input": "0x9a7c4b710000000000000000000000000000000000000000000000000000000000215cad00000000000000000000000003c545163bd114d756c65dda1d97d37b89da2236000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000931eb9d2e9b0e496aac1dcdf778399ad762e3739000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000e3000000000000000000000000000000000000000000000000000000000000007700000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000",
       "to": "0xcd1c7c85113b16a5b9e09576112d162281b5f860",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x1709f",
       "output": "0x"
     },
     "subtraces": 2,
     "traceAddress": [
       2,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xcd1c7c85113b16a5b9e09576112d162281b5f860",
       "callType": "staticcall",
       "gas": "0x49ac26",
       "input": "0x55064d85000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000e30000000000000000000000000000000000000000000000000000000000000077",
       "to": "0x9d305a42a3975ee4c1c57555bed5919889dce63f",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x57a1",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000000"
     },
     "subtraces": 1,
     "traceAddress": [
       2,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x9d305a42a3975ee4c1c57555bed5919889dce63f",
       "callType": "delegatecall",
       "gas": "0x4869fe",
       "input": "0x55064d85000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000e30000000000000000000000000000000000000000000000000000000000000077",
       "to": "0x16f78d75fabb869835236b5fb59c2b29f6cbbfcf",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x3b90",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000000"
     },
     "subtraces": 0,
     "traceAddress": [
       2,
       0,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xcd1c7c85113b16a5b9e09576112d162281b5f860",
       "callType": "call",
       "gas": "0x49526d",
       "input": "0x6e1e3bbf000000000000000000000000931eb9d2e9b0e496aac1dcdf778399ad762e3739000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000e3000000000000000000000000000000000000000000000000000000000000007700000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000",
       "to": "0x9d305a42a3975ee4c1c57555bed5919889dce63f",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xe82a",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       2,
       0,
       0,
       1
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x9d305a42a3975ee4c1c57555bed5919889dce63f",
       "callType": "delegatecall",
       "gas": "0x482a83",
       "input": "0x6e1e3bbf000000000000000000000000931eb9d2e9b0e496aac1dcdf778399ad762e3739000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000e3000000000000000000000000000000000000000000000000000000000000007700000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000",
       "to": "0x16f78d75fabb869835236b5fb59c2b29f6cbbfcf",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xe559",
       "output": "0x"
     },
     "subtraces": 0,
     "traceAddress": [
       2,
       0,
       0,
       1,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xfffffffffffffffffffffffffffffffffffffffe",
       "callType": "call",
       "gas": "0x1c962b4",
       "input": "0x19494a170000000000000000000000000000000000000000000000000000000062bd557500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000185f9018283215cae948397259c983751daf40400790063935a11afa28ab9014000000000000000000000000003c545163bd114d756c65dda1d97d37b89da2236000000000000000000000000cd1c7c85113b16a5b9e09576112d162281b5f860000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000931eb9d2e9b0e496aac1dcdf778399ad762e373900000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000007500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000a0c346dbd1115e4a8a70c678e2dfad37318035a5f36d5bad652a985d1b3e90dd006683313337000000000000000000000000000000000000000000000000000000",
       "to": "0x0000000000000000000000000000000000001001",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x26f18",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
     },
     "subtraces": 1,
     "traceAddress": [
       3
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x0000000000000000000000000000000000001001",
       "callType": "call",
       "gas": "0x4c4b40",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cae0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000014000000000000000000000000003c545163bd114d756c65dda1d97d37b89da2236000000000000000000000000cd1c7c85113b16a5b9e09576112d162281b5f860000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000931eb9d2e9b0e496aac1dcdf778399ad762e373900000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000007500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000",
       "to": "0x8397259c983751daf40400790063935a11afa28a",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x224da",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       3,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x8397259c983751daf40400790063935a11afa28a",
       "callType": "call",
       "gas": "0x4af990",
       "input": "0x9a7c4b710000000000000000000000000000000000000000000000000000000000215cae00000000000000000000000003c545163bd114d756c65dda1d97d37b89da2236000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000931eb9d2e9b0e496aac1dcdf778399ad762e373900000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000007500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000",
       "to": "0xcd1c7c85113b16a5b9e09576112d162281b5f860",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x2039e",
       "output": "0x"
     },
     "subtraces": 2,
     "traceAddress": [
       3,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xcd1c7c85113b16a5b9e09576112d162281b5f860",
       "callType": "staticcall",
       "gas": "0x49ac26",
       "input": "0x55064d85000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000075",
       "to": "0x9d305a42a3975ee4c1c57555bed5919889dce63f",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xb67a",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000000"
     },
     "subtraces": 1,
     "traceAddress": [
       3,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x9d305a42a3975ee4c1c57555bed5919889dce63f",
       "callType": "delegatecall",
       "gas": "0x4869fe",
       "input": "0x55064d85000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000075",
       "to": "0x16f78d75fabb869835236b5fb59c2b29f6cbbfcf",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x9a69",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000000"
     },
     "subtraces": 0,
     "traceAddress": [
       3,
       0,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xcd1c7c85113b16a5b9e09576112d162281b5f860",
       "callType": "call",
       "gas": "0x48f50f",
       "input": "0x6e1e3bbf000000000000000000000000931eb9d2e9b0e496aac1dcdf778399ad762e373900000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000007500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000",
       "to": "0x9d305a42a3975ee4c1c57555bed5919889dce63f",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x11c50",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       3,
       0,
       0,
       1
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x9d305a42a3975ee4c1c57555bed5919889dce63f",
       "callType": "delegatecall",
       "gas": "0x47ce9b",
       "input": "0x6e1e3bbf000000000000000000000000931eb9d2e9b0e496aac1dcdf778399ad762e373900000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000007500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000",
       "to": "0x16f78d75fabb869835236b5fb59c2b29f6cbbfcf",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x1197f",
       "output": "0x"
     },
     "subtraces": 0,
     "traceAddress": [
       3,
       0,
       0,
       1,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xfffffffffffffffffffffffffffffffffffffffe",
       "callType": "call",
       "gas": "0x1c962dc",
       "input": "0x19494a170000000000000000000000000000000000000000000000000000000062bd557500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000146f9014383215caf94a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aab9010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000d649ec9b9acea96876909054219c2fdaa00742f8000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000021c0331d5dc000a0349272f2c8d6c53608b75ffb00e2bc792c1c4f6d4b2c9604942d58f1b4e5db6781e8833133370000000000000000000000000000000000000000000000000000",
       "to": "0x0000000000000000000000000000000000001001",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xc012",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
     },
     "subtraces": 1,
     "traceAddress": [
       4
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x0000000000000000000000000000000000001001",
       "callType": "call",
       "gas": "0x4c4b40",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215caf0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000d649ec9b9acea96876909054219c2fdaa00742f8000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000021c0331d5dc000",
       "to": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x7704",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       4,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "delegatecall",
       "gas": "0x4b0577",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215caf0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000d649ec9b9acea96876909054219c2fdaa00742f8000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000021c0331d5dc000",
       "to": "0xa40fc0782bee28dd2cf8cb4ac2ecdb05c537f1b5",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x61e1",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       4,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "call",
       "gas": "0x49b56c",
       "input": "0xcf2c52cb000000000000000000000000d649ec9b9acea96876909054219c2fdaa00742f8000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000021c0331d5dc000",
       "to": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x3d04",
       "output": "0x"
     },
     "subtraces": 0,
     "traceAddress": [
       4,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xfffffffffffffffffffffffffffffffffffffffe",
       "callType": "call",
       "gas": "0x1c962d0",
       "input": "0x19494a170000000000000000000000000000000000000000000000000000000062bd557500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000147f9014483215cb094a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aab9010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000001dafb2f175e729aa49eaa0d229676b32f548d176000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000429d069189e0000a09f94436b9b34a033851b1bad2357adbf6c8800c2e71336f927559bee95c17a858201b48331333700000000000000000000000000000000000000000000000000",
       "to": "0x0000000000000000000000000000000000001001",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x102de",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
     },
     "subtraces": 1,
     "traceAddress": [
       5
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x0000000000000000000000000000000000001001",
       "callType": "call",
       "gas": "0x4c4b40",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000001dafb2f175e729aa49eaa0d229676b32f548d176000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000429d069189e0000",
       "to": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xb9d0",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       5,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "delegatecall",
       "gas": "0x4b0577",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000001dafb2f175e729aa49eaa0d229676b32f548d176000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000429d069189e0000",
       "to": "0xa40fc0782bee28dd2cf8cb4ac2ecdb05c537f1b5",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xa4ad",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       5,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "call",
       "gas": "0x49b56c",
       "input": "0xcf2c52cb0000000000000000000000001dafb2f175e729aa49eaa0d229676b32f548d176000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000429d069189e0000",
       "to": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x7fd0",
       "output": "0x"
     },
     "subtraces": 0,
     "traceAddress": [
       5,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xfffffffffffffffffffffffffffffffffffffffe",
       "callType": "call",
       "gas": "0x1c962dc",
       "input": "0x19494a170000000000000000000000000000000000000000000000000000000062bd557500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000145f9014283215cb194a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aab9010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b3126d09ebf9b5de9eaf9937bfc3e5dcececa856000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000001f4eec0c1548000a0a66e30b0161aad6d238da536d64e9619007fb26a5391c4244503efa53337ef6d0d83313337000000000000000000000000000000000000000000000000000000",
       "to": "0x0000000000000000000000000000000000001001",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xbfac",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
     },
     "subtraces": 1,
     "traceAddress": [
       6
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x0000000000000000000000000000000000001001",
       "callType": "call",
       "gas": "0x4c4b40",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb10000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b3126d09ebf9b5de9eaf9937bfc3e5dcececa856000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000001f4eec0c1548000",
       "to": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x7704",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       6,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "delegatecall",
       "gas": "0x4b0577",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb10000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000b3126d09ebf9b5de9eaf9937bfc3e5dcececa856000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000001f4eec0c1548000",
       "to": "0xa40fc0782bee28dd2cf8cb4ac2ecdb05c537f1b5",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x61e1",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       6,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "call",
       "gas": "0x49b56c",
       "input": "0xcf2c52cb000000000000000000000000b3126d09ebf9b5de9eaf9937bfc3e5dcececa8560000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000001f4eec0c1548000",
       "to": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x3d04",
       "output": "0x"
     },
     "subtraces": 0,
     "traceAddress": [
       6,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xfffffffffffffffffffffffffffffffffffffffe",
       "callType": "call",
       "gas": "0x1c962c4",
       "input": "0x19494a170000000000000000000000000000000000000000000000000000000062bd557500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000147f9014483215cb294a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aab9010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000005395640f0d9d7e51428d1e11519ae9b8b1e547b3000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000007c585087238000a08e71ee5848a1519da380b8df689787abc315743ebb4353e774bca02406c062738201078331333700000000000000000000000000000000000000000000000000",
       "to": "0x0000000000000000000000000000000000001001",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xc012",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
     },
     "subtraces": 1,
     "traceAddress": [
       7
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x0000000000000000000000000000000000001001",
       "callType": "call",
       "gas": "0x4c4b40",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb20000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000005395640f0d9d7e51428d1e11519ae9b8b1e547b3000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000007c585087238000",
       "to": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x7704",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       7,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "delegatecall",
       "gas": "0x4b0577",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb20000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000005395640f0d9d7e51428d1e11519ae9b8b1e547b3000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000007c585087238000",
       "to": "0xa40fc0782bee28dd2cf8cb4ac2ecdb05c537f1b5",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x61e1",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       7,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "call",
       "gas": "0x49b56c",
       "input": "0xcf2c52cb0000000000000000000000005395640f0d9d7e51428d1e11519ae9b8b1e547b300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000007c585087238000",
       "to": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x3d04",
       "output": "0x"
     },
     "subtraces": 0,
     "traceAddress": [
       7,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xfffffffffffffffffffffffffffffffffffffffe",
       "callType": "call",
       "gas": "0x1c962c4",
       "input": "0x19494a170000000000000000000000000000000000000000000000000000000062bd557500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000147f9014483215cb394a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aab9010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000f8eb9c2248ce3b6357c7e7067d4d16d62b7ed004000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000002ea11e32ad50000a0efb741123130fa8c575b71460ff9fae3251094f690cfbf0758e42cac26fa52b08201748331333700000000000000000000000000000000000000000000000000",
       "to": "0x0000000000000000000000000000000000001001",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x102de",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
     },
     "subtraces": 1,
     "traceAddress": [
       8
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x0000000000000000000000000000000000001001",
       "callType": "call",
       "gas": "0x4c4b40",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb30000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000f8eb9c2248ce3b6357c7e7067d4d16d62b7ed004000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000002ea11e32ad50000",
       "to": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xb9d0",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       8,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "delegatecall",
       "gas": "0x4b0577",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb30000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000f8eb9c2248ce3b6357c7e7067d4d16d62b7ed004000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000002ea11e32ad50000",
       "to": "0xa40fc0782bee28dd2cf8cb4ac2ecdb05c537f1b5",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xa4ad",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       8,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "call",
       "gas": "0x49b56c",
       "input": "0xcf2c52cb000000000000000000000000f8eb9c2248ce3b6357c7e7067d4d16d62b7ed0040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000002ea11e32ad50000",
       "to": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x7fd0",
       "output": "0x"
     },
     "subtraces": 0,
     "traceAddress": [
       8,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xfffffffffffffffffffffffffffffffffffffffe",
       "callType": "call",
       "gas": "0x1c962b8",
       "input": "0x19494a170000000000000000000000000000000000000000000000000000000062bd55b100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000147f9014483215cb494a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aab9010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000075099eada4834fc93140906e5186b695d7cfd115000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000e0303b699986ba07a9ef397ed31baaaed28ad5b5737908341b9bdcd3aba7c3bb9934258426b42338202548331333700000000000000000000000000000000000000000000000000",
       "to": "0x0000000000000000000000000000000000001001",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x102de",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
     },
     "subtraces": 1,
     "traceAddress": [
       9
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x0000000000000000000000000000000000001001",
       "callType": "call",
       "gas": "0x4c4b40",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb40000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000075099eada4834fc93140906e5186b695d7cfd115000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000e0303b699986b",
       "to": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xb9d0",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       9,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "delegatecall",
       "gas": "0x4b0577",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb40000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000075099eada4834fc93140906e5186b695d7cfd115000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000e0303b699986b",
       "to": "0xa40fc0782bee28dd2cf8cb4ac2ecdb05c537f1b5",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xa4ad",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       9,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "call",
       "gas": "0x49b56c",
       "input": "0xcf2c52cb00000000000000000000000075099eada4834fc93140906e5186b695d7cfd11500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000e0303b699986b",
       "to": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x7fd0",
       "output": "0x"
     },
     "subtraces": 0,
     "traceAddress": [
       9,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xfffffffffffffffffffffffffffffffffffffffe",
       "callType": "call",
       "gas": "0x1c962b8",
       "input": "0x19494a170000000000000000000000000000000000000000000000000000000062bd55b100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000147f9014483215cb594a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aab9010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000852a1868ba523d787ee9306a3281f76458aa5e7b000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000e0303b699986ba011ea0586618611cf4e8782e41af70f41671ba28c555fa5aefe0e0c3c4748f1d282026f8331333700000000000000000000000000000000000000000000000000",
       "to": "0x0000000000000000000000000000000000001001",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xc012",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
     },
     "subtraces": 1,
     "traceAddress": [
       10
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x0000000000000000000000000000000000001001",
       "callType": "call",
       "gas": "0x4c4b40",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb50000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000852a1868ba523d787ee9306a3281f76458aa5e7b000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000e0303b699986b",
       "to": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x7704",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       10,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "delegatecall",
       "gas": "0x4b0577",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb50000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000852a1868ba523d787ee9306a3281f76458aa5e7b000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000e0303b699986b",
       "to": "0xa40fc0782bee28dd2cf8cb4ac2ecdb05c537f1b5",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x61e1",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       10,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "call",
       "gas": "0x49b56c",
       "input": "0xcf2c52cb000000000000000000000000852a1868ba523d787ee9306a3281f76458aa5e7b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000e0303b699986b",
       "to": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x3d04",
       "output": "0x"
     },
     "subtraces": 0,
     "traceAddress": [
       10,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xfffffffffffffffffffffffffffffffffffffffe",
       "callType": "call",
       "gas": "0x1c962ac",
       "input": "0x19494a170000000000000000000000000000000000000000000000000000000062bd55b100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000147f9014483215cb694a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aab9010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000c3bee8240dba8b0e5b2f4e06090a7eb1e18d4ace000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000006679f17951ff8a5a0f9b2810960898e373f702a4d5a95b74e32b083d93e8fb2d5c2a67ef320015a148203878331333700000000000000000000000000000000000000000000000000",
       "to": "0x0000000000000000000000000000000000001001",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x117c1",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
     },
     "subtraces": 1,
     "traceAddress": [
       11
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x0000000000000000000000000000000000001001",
       "callType": "call",
       "gas": "0x4c4b40",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb60000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000c3bee8240dba8b0e5b2f4e06090a7eb1e18d4ace000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000006679f17951ff8a5",
       "to": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xceb3",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       11,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "delegatecall",
       "gas": "0x4b0577",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb60000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000c3bee8240dba8b0e5b2f4e06090a7eb1e18d4ace000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000006679f17951ff8a5",
       "to": "0xa40fc0782bee28dd2cf8cb4ac2ecdb05c537f1b5",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xb990",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       11,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "call",
       "gas": "0x49b56c",
       "input": "0xcf2c52cb000000000000000000000000c3bee8240dba8b0e5b2f4e06090a7eb1e18d4ace0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000006679f17951ff8a5",
       "to": "0xae740d42e4ff0c5086b2b5b5d149eb2f9e1a754f",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x94b3",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       11,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xae740d42e4ff0c5086b2b5b5d149eb2f9e1a754f",
       "callType": "delegatecall",
       "gas": "0x487a24",
       "input": "0xcf2c52cb000000000000000000000000c3bee8240dba8b0e5b2f4e06090a7eb1e18d4ace0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000006679f17951ff8a5",
       "to": "0x0f1c828ae960a1780c7125b9b6be2f7e3dba22cd",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x7fba",
       "output": "0x"
     },
     "subtraces": 0,
     "traceAddress": [
       11,
       0,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xfffffffffffffffffffffffffffffffffffffffe",
       "callType": "call",
       "gas": "0x1c962c4",
       "input": "0x19494a170000000000000000000000000000000000000000000000000000000062bd55b100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000147f9014483215cb794a6fa4fb5f76172d178d61b04b0ecd319c5d1c0aab9010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000027e931831b89dc5c5852e8238ff401125cb67682000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000009b6e64a8ec60000a0731a0e81b7d993604bc278d1fba6a8dce94cd0a475936ced9342e1f7d2700a6c8203898331333700000000000000000000000000000000000000000000000000",
       "to": "0x0000000000000000000000000000000000001001",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x102de",
       "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
     },
     "subtraces": 1,
     "traceAddress": [
       12
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0x0000000000000000000000000000000000001001",
       "callType": "call",
       "gas": "0x4c4b40",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb70000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000027e931831b89dc5c5852e8238ff401125cb67682000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000009b6e64a8ec60000",
       "to": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xb9d0",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       12,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "delegatecall",
       "gas": "0x4b0577",
       "input": "0x26c53bea0000000000000000000000000000000000000000000000000000000000215cb70000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010087a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000027e931831b89dc5c5852e8238ff401125cb67682000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000009b6e64a8ec60000",
       "to": "0xa40fc0782bee28dd2cf8cb4ac2ecdb05c537f1b5",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0xa4ad",
       "output": "0x"
     },
     "subtraces": 1,
     "traceAddress": [
       12,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   },
   {
     "action": {
       "from": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa",
       "callType": "call",
       "gas": "0x49b56c",
       "input": "0xcf2c52cb00000000000000000000000027e931831b89dc5c5852e8238ff401125cb676820000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000009b6e64a8ec60000",
       "to": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
       "value": "0x0"
     },
     "blockHash": "0x469990aac1faf8009a9bc3bc83ebd54968bf1af92a1fd39c16d3748ef4203452",
     "blockNumber": 30167616,
     "result": {
       "gasUsed": "0x7fd0",
       "output": "0x"
     },
     "subtraces": 0,
     "traceAddress": [
       12,
       0,
       0,
       0
     ],
     "transactionHash": "0xd2b8d76bb5e9b7ab24aa25e8fbe56e28a333587bb7df9311448c3cac103d8558",
     "transactionPosition": 163,
     "type": "call"
   }
 ]
}

```
2024-01-29 13:10:21 +00:00
Dmytro
a63b89334b
added logging for slow RPC requests (#8818)
Changed distribution of httpcfg.HttpCfg to be pointer.
Added new flags:
rpc.slow.log - which is false by default, this flag need to enable
logging slow RPC requests
rpc.slow.log.threshold - which is 100 by default, this flag specify slow
threshold in milliseconds
Updated rpc handler to log slow requests:
- added map[request id] {method, timestamp}
- put every request details to map above
- delete request details from map above
- added time interval check for elements in map and if time difference
is more than given threshold print request id and the method
- app will print slow requests in next cases:
1. As soon as request take more than given threshold
2. Every 20 seconds if request still in process
3. After request finished and it took more than give threshold

---------

Co-authored-by: alex.sharov <AskAlexSharov@gmail.com>
2023-11-28 16:11:39 +07:00
milen
9b74cf0384
metrics: use prometheus histogram and summary interfaces (#8808) 2023-11-24 17:50:57 +00:00
Mark Holt
f3ce5f8a36
Bor proofgen tests (#8751)
Added initial proof generation tests for polygon reverse flow for devnet

Blocks tested, receipts need trie proof clarification
2023-11-17 10:41:45 +00:00
Dmytro
a6b5297b3e
dvovk/tunnelwws (#8745)
- changed communication tunnel to web socket in order to connect to
remote nodes
- changed diagnostics.url flag to diagnostics.addr as now user need to
enter only address and support command will connect to it through
websocket
- changed flag debug.urls to debug.addrs in order to have ability to
change connection type between erigon and support to websocket and don't
change user API
- added auto trying to connect to connect to ws if connection with was
failed
2023-11-16 16:37:29 +00:00
Alex Sharov
35bfffd621
sys deps up (#8695) 2023-11-11 15:04:18 +03:00
battlmonstr
3698e7f476
devnet: configuration fixes (#8592)
* fix "genesis hash does not match" when dev nodes connect  
The "dev" nodes need to have the same --miner.etherbase in order to
generate the same genesis ExtraData by DeveloperGenesisBlock(). Override
DevnetEtherbase global var that's used if --miner.etherbase is not
passed. (for NonBlockProducer case)

* fix missing private key for the hardcoded DevnetEtherbase  
Fixes panic if SigKey is not found. Bor non-producers will use a default
`DevnetEtherbase` while Dev nodes modify it. Save hardcoded
DevnetEtherbase/DevnetSignPrivateKey into accounts so that SigKey can
recover it.

* refactor devnet.node to contain Node config  
This avoids interface{} type casts and fixes an error with
Heimdall.validatorSet == nil

* add connection retries to rpcCall and Subscribe of requestGenerator  
Fixes "connection refused" errors due to node not ready to handle early
RPC requests.

* fix deadlock in Heimdall.NodeStarted

* fix GetBlockByNumber
Fixes "cannot unmarshal string into Go struct field body.transactions of
type jsonrpc.RPCTransaction"

* demote "no of blocks on childchain is less than confirmations
required" to Info (#8626)

* demote "mismatched pending subpool size" to Debug (#8615)

* revert wiggle testing code
2023-11-01 11:08:47 +01:00
a
436493350e
Sentinel refactor (#8296)
1. changes sentinel to use an http-like interface

2. moves hexutil, crypto/blake2b, metrics packages to erigon-lib
2023-10-22 01:17:18 +02:00
Mark Holt
0bdca6c457
Metrics label fixes (#8339)
Fixes for label discrepancies in collector for summaries etc which have
a template which includes a quantile.

Initial native Prometheus client implementation of metrics - which is
currently turned off except for local testing and interface exports.
2023-10-02 17:19:02 +01:00
Mark Holt
f794438335
Diag session routing (#8232)
Code to support react based UI for diagnostics:

* pprof, prometheus and diagnistics rationalized to use a single router
(i.e. they can all run in the same port)
* support_cmd updated to support node routing (was only first node)
* Multi content support in router tunnel (application/octet-stream &
appliaction/json)
* Routing requests changed from using http forms to rest + query params
* REST query requests can now be made against erigon base port and
diagnostics with the same url format/params

---------

Co-authored-by: dvovk <vovk.dimon@gmail.com>
Co-authored-by: Mark Holt <mark@disributed.vision>
2023-09-25 16:24:17 +01:00
Srdjan
dedf04caaa
Pre-allocate method metric labels (#8243)
Closes #8085
2023-09-21 09:38:47 +02:00
Mark Holt
8ea0096d56
moved metrics sub packages types to metrics (#8119)
This is a non functional change which consolidates the various packages
under metrics into the top level package now that the dead code is
removed.

It is a precursor to the removal of Victoria metrics after which all
erigon metrics code will be contained in this single package.
2023-09-03 08:09:27 +07:00
Mark Holt
e81852320c
Remove unused metrics and out of date versions (#8109)
ergon/metrics contains a lot of unused types - the pull is removing them
prior to rationalizing between Prometheus and Victoria Metrics types.

It also have upgrades of golang-lru + sets types to v2 when possible.
2023-09-01 07:13:13 +07:00
Mark Holt
a4cfbe0d56
Heimdall metrics + Metrics HTTP server rationalization (#8094)
This is an update of:

https://github.com/ledgerwatch/erigon/pull/7846

which uses a local fork of victoria metrics to include the changes that
https://github.com/anshalshukla added to the original for we where
using.

It also includes code to address the duplicate metrics issue identified
here:

https://github.com/ledgerwatch/erigon/issues/8053

It has one more associated fix which is to correctly add a metadata
label to counters, these where previously labelled as gauges.

e.g. 

```
# TYPE p2p_peers counter
p2p_peers 0
```
rather than

```
# TYPE p2p_peers gauge
p2p_peers 0
```

---------

Co-authored-by: Anshal Shukla <53994948+anshalshukla@users.noreply.github.com>
Co-authored-by: Anshal Shukla <shukla.anshal85@gmail.com>
2023-08-31 09:04:27 +01:00
Alex Sharov
ddf608f866
rpc: a bit less metrics allocations (#8084) 2023-08-26 11:20:08 +07:00
Mark Holt
c51573f333
Bor eth event flow (#8068)
Implemented polygon->eth flow
2023-08-25 12:19:39 +01:00
a
db5b348673
Caplin block persistence (#7941)
Co-authored-by: Giulio <giulio.rebuffo@gmail.com>
2023-08-09 01:21:19 +02:00
Andrew Ashikhmin
d69b20bc4e
Support engine_forkchoiceUpdatedV3 with ParentBeaconBlockRoot (EIP-4788) (#7969)
Prerequisites: https://github.com/ledgerwatch/interfaces/pull/187 &
https://github.com/ledgerwatch/erigon-lib/pull/1069. Also implement
https://github.com/ethereum/execution-apis/pull/426.
2023-08-06 11:54:14 +02:00
Mark Holt
1e575ea172
rpc service and stageloop logger updates (#7696)
This is another update to logging to replace the root logger with a
contextual logger
2023-06-10 07:39:39 +01:00
ledgerwatch
067f695fff
[devnet tool] Separate logging (#7553)
Co-authored-by: Alex Sharp <alexsharp@Alexs-MacBook-Pro-2.local>
2023-05-20 14:48:16 +01:00
ledgerwatch
05597cb195
[devnet tool] separare logging (#7531)
Co-authored-by: Alex Sharp <alexsharp@Alexs-MacBook-Pro-2.local>
2023-05-17 17:36:15 +01:00
Alex Sharov
201572c6f5
enable more linters #954 (#7179) 2023-03-25 05:13:27 +00:00
hexoscott
165a6a950d
check for nil stream when running the null check in handler (#7105) 2023-03-15 04:03:16 +00:00
hexoscott
84ec0a0b4b
check for nil before returning invalid json in rpc streaming calls (#7104)
should handle nil having already been written in any rpc call before
writing it again causing invalid json to be returned.
2023-03-14 11:07:53 +00:00
alex.sharov
7190d89af3 save 2023-03-10 16:01:55 +07:00
Andrew Ashikhmin
2fa448c45f
Validate params of GetPayloadBodiesByHash and ByRange (#6785)
See https://github.com/ethereum/execution-apis/pull/366 and
https://github.com/ethereum/execution-apis/pull/370.

Also fix a couple of issues so that the Hive tests pass.
2023-02-06 18:38:45 +01:00
a
966be04e6d
add eth_getFilterLogs, fix filter subscription ids (#6514)
this pr does the following:

1. adds new function to ApiImpl `GetFilterLogs` which should implement
`eth_getFilterLogs` (eth_getFilterChanges except with only logs filters)

2. changes the ID generator of rpchelper.Filters to use crypto/rand.

3. switched logs subscriptions to use the secure ID instead of number

4. changes subcription ids from an 8 byte hex string to a 16 byte
2023-02-06 10:18:10 +07:00
hexoscott
7dcbfbc283
reference hash, address, and chain config from lib (#6536) 2023-01-13 18:12:18 +00:00
ledgerwatch
389a2e8392
Eth call limits (#6523)
Co-authored-by: Alex Sharp <alexsharp@Alexs-MacBook-Pro-2.local>
Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>
2023-01-07 21:16:43 +00:00
a
ad7be30679
jsonrpc HTTP Get handler & logs topic filter with map (#5922)
this pr has two things in it

1. changed filter logs to use a map for the topics. this will speed up
queries with many topics in them. I still don't have a use case for this
though. i put is as a method of Logs, since that made sense to me, happy
to move it back out though.

2. allows json-rpc over http get request. since firefox is a great json
viewer (can search through, collapse large results) i often use it to
debug. it is also useful for sharing data with those who are less
familiar with command line / programming.
example get request:

http://rpcdaemon/?method=eth_getLogs&params=[{"fromBlock":"0xf2316b","toBlock":"0xf2316b"}]

it is based on the old jsonrpc http specification
https://www.jsonrpc.org/historical/json-rpc-over-http.html#encoded-parameters
except we also accept not base64 encoded params. since every eth rpc
request has a [], it will immediately fail validation for base64 and
attempt to use the parameters as a they are. otherwise it will attempt
to parse the rest of the payload as base64 and use that.

Co-authored-by: a <a@a.a>
Co-authored-by: gfx <86091021+gfxlabs@users.noreply.github.com>
2022-11-03 09:09:04 +07:00
dtan3847
42aa80e059
rpc: fix implemented filter methods being forbidden (#5801)
Addresses issue #4833

Removes implemented methods from the forbidden method list. The
forbidden list seems to have been created as a bugfix before the filters
methods were implemented. Now that the filter methods are implemented,
these entries are causing unexpected behaviour.
2022-10-26 09:08:09 +07:00
Temirlan
44266a9237
rcpdaemon, erigon: add --rpc.evmtimeout flag (#5395) 2022-09-17 13:25:27 +07:00
ledgerwatch
566cd65664
Revert "cancel context before waiting for waitgroup to avoid deadlock in RPC on error (#5345)" (#5360)
This reverts commit 9ff5b21a1e.
2022-09-14 08:45:59 +01:00
ledgerwatch
9ff5b21a1e
cancel context before waiting for waitgroup to avoid deadlock in RPC on error (#5345)
Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>
2022-09-13 08:52:58 +07:00
Enrique Jose Avila Asapche
19a178bf19
missing return; (#5328) 2022-09-11 09:35:18 +07:00
Håvard Anda Estensen
ea6b92b132
Enable gosec linter (#5083)
* Ignore pseudo random generators

* Enable gosec linter
2022-08-17 12:18:19 +07:00
Alex Sharov
52fd0d0e8b
Aggregator22.Unwind() (#5039)
* save

* save
2022-08-13 18:51:25 +07:00
Alex Sharov
351cd49c21
go1.19 gofmt (#4988) 2022-08-10 19:04:13 +07:00
Enrique Jose Avila Asapche
c12d298f1c
new rpc block number (#4953)
* new rpc block number

* log

* ops
2022-08-08 19:07:24 +07:00
Dan Kelly
cce64f6a33
Fix rpc json #4838 (#4894)
* Fixing RPC JSON errors

* Use local rpc mod

* Revert "Use local rpc mod"

This reverts commit 61d06a72d2.

* Make handle error accessible

* Port fixes to rpcdaemon22

* Remove unused...

* ... and use correct function name

* Handle errors outside iterator loop. Fix missing rpcdaemon22 error handling

* Bubble up higher level errors to the top-level object

* Fix linter error - semi-colon..
2022-08-08 09:15:58 +07:00
Alex Sharov
2681ee392a
rpc: fix error stream (#4860) 2022-07-29 10:01:13 +07:00
Andrew Ashikhmin
f927ac8037
Increase JWT issued-at window to 60s (#4835) 2022-07-27 09:16:50 +02:00
Alex Sharov
66758c7960
RetireBlocks: less arguments (#4785)
* save

* save
2022-07-22 13:44:42 +07:00
Alex Sharov
d9cb87a149
RPC: Enable back json streaming for non-batch and non-websocket cases (#4647)
* enable rpc streaming

* enable rpc streaming
2022-07-06 11:44:06 +01:00
Andrew Ashikhmin
8de7c5e41c
JSON parsing of safe & finalized (#4524) 2022-06-23 19:37:39 +02:00
ledgerwatch
64067a2b77
Debugging Engine API (#4488)
* defer tx rollback

* Add http.trace flag

* Fixed http.trace flag

* Fix lint

* Fix lint

* Delete unused tests

* Fix lint

* Fix lint

* Fix lint

* Fix lint

Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>
2022-06-19 13:40:28 +01:00