Commit Graph

783 Commits

Author SHA1 Message Date
Max Revitt
345e668832
feat(pos download): send header request to multiple peers (#5948) 2022-11-04 09:07:46 +00:00
Willian Mitsuda
84ac1b919c
Use pooled bitmaps (#5946) 2022-11-03 12:50:16 +07:00
Willian Mitsuda
11f4978ed4
Upstream all Otterscan patches to devel (#5945)
Following our previous discussion on erigon's discord, this PR requests
to upstream all Otterscan modifications to erigon's repo.

That decision comes after getting feedback from lots of users at events
this year, and although it may introduce some friction for development,
it will make integrators life easier by having all our modifications
available out of box, e.g., dappnode users will get our RPCs since their
official packages are built from erigon repo.

I'm submitting the source-code as-is, please let me know if you think
there is a better code organization.

The current set of modifications comprises only new RPCs. There are some
proposals for extra-stages that would add new tables, but they are still
WIP and will be submitted separately in future after more testing.
2022-11-03 11:32:15 +07: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
net.wyman
7548755b62
fix potential deadlock in eth_filters logs event (#5912)
Like the newPendingTransaction event, the logs event also has the
potential for deadlock when unsubscribed
2022-11-01 08:59:01 +07:00
net.wyman
98420edd30
Update README.md (#5914)
the rpc_daemon README.md is out of date and miss the eth_subscribe logs
event
2022-11-01 08:56:22 +07:00
Alex Sharov
381bea5b92
e3: eth_traceTransaction implementation (#5909) 2022-10-31 12:31:38 +07:00
Andrew Ashikhmin
dd43d486f3
Enable London in AllEthashProtocolChanges (#5891)
`AllEthashProtocolChanges` should contain all the EIPs accepted by the
core developers into the Ethash consensus, including the
[London](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/london.md)
protocol upgrade.
2022-10-28 17:19:18 +02:00
Andrew Ashikhmin
f46300e37e
core/vm: Rename SHA3 instruction to KECCAK256 (#5890)
Cherry-pick https://github.com/ethereum/go-ethereum/pull/23976

Co-authored-by: Alex Beregszaszi <alex@rtfs.hu>
2022-10-28 13:38:34 +02:00
Alex Sharov
f72cfb2167
e3: eth_getLogs speedup (#5887) 2022-10-28 17:53:58 +07:00
Alex Sharov
880f673dff
allow empty topics filter in eth_getLogs - regression after #5805 (#5885) 2022-10-28 09:55:22 +07:00
Alex Sharov
8d1ed547b0
E3: parallel exec, apply on roTx (#5879) 2022-10-28 08:47:45 +07:00
Andrew Ashikhmin
6a5968e7f0
AuRa service transactions are free (#5873)
and the don't pay baseFee after EIP-1559.

See https://openethereum.github.io/Permissioning.html#gas-price
2022-10-26 13:03:47 +02:00
Alex Sharov
26fdf9169d
move all packages from "internal" folder - to simplify users live (#5857) 2022-10-25 09:58:25 +07:00
Alex Sharov
993fde4d92
E3: par logs (#5839) 2022-10-23 18:51:14 +07:00
Alex Sharov
606ce5c99a
add logging cli flags to various cmd (#5816) 2022-10-21 12:36:17 +07:00
Levi Aul
e85d4b76aa
Return bor receipts correctly in getTransactionReceipt and getBlockReceipts (#5787)
Fixes a nil-pointer dereference in Decode when attempting to call
`getTransactionReceipt` / `getBlockReceipts` on blocks containing
stateSync events.
2022-10-20 19:25:46 +01:00
Max Revitt
07ffa36d44
File system logging (#5812)
- lives in internal/logging
- all log flags moved to internal/logging/flags
- allows continued use of root logger via log.Info etc.
- update logger to take change allowing string to lvl for 'trace'

Verbosity flag is overridden by log.console.verbosity. Logs will be
colocated if all run as one process, only split where progs are run as
separate processes, in a future update this will be addressed so for
example rpcdeamon will always log to it's own file
2022-10-20 19:25:06 +01:00
a
d697b6fe7c
large performance optimization for filterLogs (getLogs) when doing queries with many addresses and logs. (#5805)
this pr changes filterLogs to use a pre computed hashset of addresses,
instead of iterating across the list of addresses once per log.

this greatly increases the speed of filter queries that use many
addresses and also return a large number of logs. In our case, we are
performing a query for all the trades performed in a uniswap v3 pool in
a 250 block range.
 
my benchmarks were performed with the data & code below:
 
address list gist is here
[addrs](2c30b0df43/gistfile1.txt)

 ```
 c := NewRpcClient()
 addrs := []common.Address{AddressListGist}
logs, err := c.FilterLogs(context.TODO(), ethereum.FilterQuery{
	FromBlock:big.NewInt(15640000),
	ToBlock:   big.NewInt(15640250),
	Addresses: addrs,
	Topics: [][]common.Hash{
		{

common.HexToHash("c42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67"),
		},
	},
```
the query contains 8442 addresses, while the response contains 1277 logs

On average, current devel averages a 15.57 second response time on my machine after 10 runs, while the new filterLogs averages 1.05 seconds.

for CURRENT DEVEL, the profile is here: https://pprof.aaaaa.news/cd8dkv0tidul37sctmi0/flamegraph 

for the filterLogs branch, the profile is here: https://pprof.aaaaa.news/cd8dlmgtidul37sctmig/flamegraph

while the tests pass with this branch, I am not really sure why filterLogs was originally programmed the way it was. Is there some sort of edge case / compatibility thing that I am missing with this change?

Co-authored-by: a <a@a.a>
2022-10-20 17:34:20 +07:00
Alex Sharov
14493d5a8d
e3: eth_getLogs fix (#5780) 2022-10-18 14:42:00 +07:00
Alex Sharov
dcf6216591
e3: tests (#5779) 2022-10-18 13:06:25 +07:00
Alex Sharov
c6faa9fca3
e3: tests (#5776) 2022-10-18 11:53:54 +07:00
Alex Sharov
b8dbb53d3b
e3: write history and indices to etl (#5742) 2022-10-15 08:20:58 +07:00
Enrique Jose Avila Asapche
81cec4dd68
checking if bor log (#5739)
Fixing this err= ```EROR[10-13|08:27:56.405] RPC method eth_getLogs
crashed: runtime error: index out of range [289] with length 289
[service.go:217 panic.go:838 panic.go:93 eth_receipts.go:222
value.go:556 value.go:339 service.go:222 handler.go:494 handler.go:444
handler.go:392 handler.go:223 handler.go:316 asm_amd64.s:1571]```
2022-10-13 22:14:50 +01:00
Alex Sharov
b12b0d4627
e3: history bsc and mainnet snapshots (#5725) 2022-10-13 09:46:32 +07:00
Alex Sharov
4795217e4e
e3: prevent files ranges overlap (#5684) 2022-10-12 10:18:55 +07:00
net.wyman
00276ce7ab
add pendingTransactionWithBody subscription method (#5675)
Co-authored-by: dc <dctrlbox@gmail.com>
2022-10-11 16:52:07 +01:00
Alex Sharov
a2e51a2469
e3: prune limited amount before commit #675 (#5693) 2022-10-11 11:25:13 +07:00
ledgerwatch
1bc0a796d2
fix for rpcdaemon crash if there is no datadir (#5686)
Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>
2022-10-10 12:40:21 +01:00
Alex Sharov
ee76a4f490
e3: getLogsV3 fix history txnum (#5676) 2022-10-09 18:29:35 +07:00
Alex Sharov
6a52007c69
e3: always created dir (#5638) 2022-10-06 09:18:37 +07:00
Alex Sharov
ca9aa4723c
Compress params change (#5631)
as of https://github.com/ledgerwatch/erigon-lib/pull/651
2022-10-05 17:54:54 +07:00
Alex Sharov
2011dd806a
erigon3: fix stuck test (#5629) 2022-10-05 12:54:31 +07:00
ledgerwatch
94f4ea805d
Fixing hive SideChain reorg test (#5620)
the root cause is that when `inMemoryExecution` lambda gets created in
the `eth/backend.go`, it captures the reference of
`backend.notifications`, and so the execution of side-forks actually
adds notifications to there, and it all gets sent out to tx pool (and
RPC daemon) at the end of the stage loop (regardless of whether there
was forkchoice update or not)

so we can create a separate notification, but then somehow flush it to
the "main" nofitications when the in-memory exec state is flushed

Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>
Co-authored-by: Alex Sharp <alexsharp@Alexs-MacBook-Pro.local>
2022-10-05 05:42:38 +01:00
Alex Sharov
afcd605fc5
remote rpcdaemon to create snapshots/history dir at startup #5594 2022-10-02 14:48:26 +07:00
Alex Sharov
37f76c9a9e
bitmapdb (#5593) 2022-10-02 10:54:40 +07:00
a
7c8b3c2ba1
[rpcdaemon] greatly increase speed of {eth,erigon}_getLogs (#5572) 2022-10-02 10:51:19 +07:00
Alex Sharov
1b17a3226a
agg print stats at startup (#5586) 2022-10-01 09:29:28 +07:00
Enrique Jose Avila Asapche
c2a1558923
changed erigon logs fields (#5476)
* changed erigon logs fields

* lint

* Update erigon_receipts.go (#5485)

* lint

Co-authored-by: a <edward9.lee@gmail.com>
2022-09-28 20:46:42 +01:00
Enrique Jose Avila Asapche
f4c6e45f45
returning validator in POS trace (#5477) 2022-09-28 20:45:52 +01:00
Håvard Anda Estensen
23d21f3b44
Enable unconvert linter (#5566) 2022-09-28 15:10:38 +01:00
bgelb
c28b1d230b
run traceCall on top of state resulting from fully executed baseblock a.k.a. starting state of blockNumber+1 (#5555) 2022-09-28 08:30:58 +01:00
Alex Sharov
6d07443ca5
erigon3: remote rpcdaemon used wrong agg dir #5562 2022-09-28 12:36:53 +07:00
Enrique Jose Avila Asapche
a968c7ed5b
cleaned up storage and retrieval of state sync receipts (#5379)
* cleaned up storage and retrieval of state sync receipts

* added ctx to the error and got rid of unused var

* missing one

* small change

* log error

* ops

* read header number

* checking if status is succesful

* nil ptr err
2022-09-27 11:39:58 +01:00
Alex Sharov
4c2611c03e
erigon3: eth_getLogs support logIndex field (#5544) 2022-09-27 16:08:45 +07:00
Alex Sharov
c64e7fe7ab
erigon3 test fix (#5522) 2022-09-26 13:34:46 +07:00
Alex Sharov
cb60382e6d
erigon3: rename "history.v2" to "history.v3" to avoid naming miss-match with "erigon3" (#5519) 2022-09-26 10:54:42 +07:00
Alex Sharov
fdb83de6f5
erigon22: authapi to use aggregator22 (#5506)
* save

* save
2022-09-26 09:09:30 +07:00
jiang
09db0c8d43
open erigon_blockNumber API (#5454)
open `erigon_blockNumber`  feature API that has been implemented
2022-09-21 19:30:01 +07:00
Alex Sharov
54343d1d69
save (#5439) 2022-09-20 13:09:24 +01:00