Commit Graph

18499 Commits

Author SHA1 Message Date
Andrew Ashikhmin
9b63764b16
Move ApplyDAOHardFork & UpgradeBuildInSystemContract to engine.Initialize (#8095)
Now all protocol-stipulated changes at the beginning of the block (AuRa
stuff,
[DAO](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/dao-fork.md)
irregular state change, Calcutta system contract upgrade,
[EIP-4788](https://eips.ethereum.org/EIPS/eip-4788) beacon root) are
handled by consensus engine `Initialize()`.
2023-08-30 15:51:19 +02:00
battlmonstr
f7c7c109ce
ci: move TestExecutionSpec and TestMiningBenchmark to integration test suite (#8104)
TestExecutionSpec takes significant time to run (12s for me),
and frequently timeouts on Windows PR builds:

https://github.com/ledgerwatch/erigon/actions/runs/5974942021/job/16235304043?pr=8077

Same with bor.TestMiningBenchmark:

https://github.com/ledgerwatch/erigon/actions/runs/6024465717/job/16343219099

Move it to the integration workflow where the timeout is longer.
2023-08-30 14:54:27 +02:00
Mark Holt
f05a6ab43e
Bor mining benchmark (#8096)
Replacement for: https://github.com/ledgerwatch/erigon/pull/7998 with
windows fixes

---------

Co-authored-by: SHIVAM SHARMA <shivam691999@gmail.com>
2023-08-30 10:25:02 +01:00
formatting
6728359e55
fix debug_traceTransaction get noce overflow (#8100)
fix: Prevent nonce overflow in debug_traceTransaction
fix #8099
2023-08-30 15:31:13 +07:00
Mark Holt
f2d0118a33
Bor snapshot block production (#8065)
I have added:

```go
{
	ID:          stages.BorHeimdall,
	Description: "Download Bor-specific data from Heimdall",
	Forward: func(firstCycle bool, badBlockUnwind bool, s *StageState, u Unwinder, tx kv.RwTx, logger log.Logger) error {
		if badBlockUnwind {
			return nil
		}
		return BorHeimdallForward(s, u, ctx, tx, borHeimdallCfg, true, logger)
	},
	Unwind: func(firstCycle bool, u *UnwindState, s *StageState, tx kv.RwTx, logger log.Logger) error {
		return BorHeimdallUnwind(u, ctx, s, tx, borHeimdallCfg)
	},
	Prune: func(firstCycle bool, p *PruneState, tx kv.RwTx, logger log.Logger) error {
		return BorHeimdallPrune(p, ctx, tx, borHeimdallCfg)
	},
},
```
To MiningStages as well as Default as otherwise bor events are not added
when the block producer creates new blocks.

There are a couple of questions I have around this implementation:

* Is this the right place to add this
* As the state is also executed when the default stage is processed ther
is some duplicate processing for the block producing node.
* There is a duplicated call to heimdall which could be removed if the
stages share state - but its not clear if we want to do this.
* I don't think the mining stage needs to prune as this will be
replicated in the default iteration

This can be tested using the devnet with the following arguments:

```
--chain bor-devnet --bor.localheimdall --scenarios state-sync
```

This will generate sync events via an ethereum devnet which are
transmitted to bor chain and will be executed at the end of the snapshot
delay, which results in events generated from the bor chain. This tests
the whole sync, block generation, event lifecycle. As it needs to wait
for sprints to end after a sufficient delay it is quite slow to run.
2023-08-30 08:06:09 +01:00
Alex Sharov
bb16f29c04
Compress: graceful shutdown support (#8098) 2023-08-30 10:20:43 +07:00
Alex Sharov
d1d348211f
add flag --force.partial.commit: to workaround problem "start from backup takes long time and can't save partial progress" (#8090) 2023-08-30 08:49:16 +07:00
Reg
661e99985d
docker-compose erigon service not using expected user/group (#8097) 2023-08-30 08:47:50 +07:00
Giulio rebuffo
901edf9181
Accessors to Caplin indexed database (#8093) 2023-08-29 16:47:16 +02:00
Andrew Ashikhmin
63628618eb
Small fixes to Holesky config (#8092)
Small fixes to PR #8064:

- Don't set cancunTime for Holesky – otherwise we'll have to overwrite
it later using the `--override.cancun` flag
- We don't have block snapshots for Holesky yet
- Add Holesky to `isChainIDPoS`

See https://github.com/eth-clients/holesky/pull/68
2023-08-29 16:29:14 +02:00
Giulio rebuffo
93cdbae2e5
Caplin<->Erigon: Added Range methods (#8087) 2023-08-29 02:37:30 +02:00
battlmonstr
8e653b54ee
bor: more mumbai bootnodes (#8077) 2023-08-28 12:23:42 +02:00
Alex Sharov
42909ffb1b
grafana: hide low-level metrics. move all high-level metrics on top (#8088) 2023-08-27 19:12:27 +07:00
racytech
f477348a50
Support for --chain=holesky (#8064) 2023-08-26 16:31:29 +06:00
Alex Sharov
ddf608f866
rpc: a bit less metrics allocations (#8084) 2023-08-26 11:20:08 +07:00
Giulio rebuffo
f5cc67fe5b
Added ranges to the Execution.proto (#8081) 2023-08-26 02:25:48 +02:00
Giulio rebuffo
8291aa2497
Caplin: Storing Execution Headers in Caplin (#8080)
This PR stores Execution Headers in Caplin when running without storing
fullblocks
2023-08-26 00:41:57 +02:00
Giulio rebuffo
d223adf114
Better migrations and chain segmentation recovery (#8079) 2023-08-25 17:45:00 +02:00
Giulio rebuffo
41185e2518
Added Online pruning to Caplin (#8058)
Basically, pruning is specified by the user, by default, 1 million (in
the PR set to 100 for pruning purposes). the pruning for the database is
stored inside the db
2023-08-25 14:58:35 +02:00
Alex Sharov
e5cde45936
[wip]: test non-nil compress.Next (#8072)
Co-authored-by: Mark Holt <mark@distributed.vision>
2023-08-25 12:53:05 +01:00
Mark Holt
c51573f333
Bor eth event flow (#8068)
Implemented polygon->eth flow
2023-08-25 12:19:39 +01:00
Andrew Ashikhmin
a03e85e749
Disable TestExecutionSpec in e3 (#8076) 2023-08-25 12:43:29 +02:00
battlmonstr
32ca0e5ab1
sync: revert flawed dropUselessPeers logic and alleviate its issues (#8062)
The current logic is flawed, because it drops all peers that are less
synced.
It is valid to return empty responses by the eth spec.
A proper logic should penalize from the context of the sync process,
where enough "reputation" data is collected about a peer.

In order to be able to connect to erigon 2.48 peers that have
--sentry.drop-useless-peers enabled,
this adds a check to not reply with an empty headers list.
If we reply with an empty list, we're going to be considered useless and
kicked.
Once enough of erigon nodes are updated in the network past this commit,
this check should be removed,
because it is totally acceptable to return an empty list by the eth
spec.
2023-08-25 11:42:54 +02:00
Andrew Ashikhmin
078e93011e
Skip failing TestBlockchainEIP (#8074) 2023-08-25 09:58:13 +02:00
Andrew Ashikhmin
75e3ae0ba4
Revert ethereum tests back to v12.3 (#8073)
Revert inadvertent change made by PR #8061
2023-08-25 08:36:43 +02:00
Andrew Ashikhmin
a6d9d26fe9
Fix opSelfdestruct6780 (#8066)
also upgrade execution-spec-tests to
[v1.0.2](https://github.com/ethereum/execution-spec-tests/releases/tag/v1.0.2)
2023-08-25 08:06:59 +02:00
alex.sharov
5f7a84ff72 fix linter 2023-08-25 12:05:45 +07:00
alex.sharov
da275f35cc fix linter 2023-08-25 12:05:36 +07:00
Alex Sharov
c4def0402a
Torrent: add trackers list (#8071) 2023-08-25 10:45:08 +07:00
Alex Sharov
5224a7dc8c
update dot and chi libs (#8069) 2023-08-25 09:26:56 +07:00
Andrew Ashikhmin
1fd9d20e14
EIP-4788 v2 (no precompile) (#8038)
See https://github.com/ethereum/EIPs/pull/7456 &
https://github.com/ethereum/go-ethereum/pull/27849. Also set the gas
limit for system calls to 30M (previously 2^64-1), which is in line with
the [Gnosis
spec](https://github.com/gnosischain/specs/blob/master/execution/withdrawals.md#specification),
but should be doubled checked for Gnosis Chain.
2023-08-24 17:10:50 +02:00
battlmonstr
bb2c2adbb6
p2p: fix RLPx disconnect message decoding (#8056)
The disconnect message could either be a plain integer, or a list with
one integer element. We were encoding it as a plain integer, but
decoding as a list. Change this to be able to decode any format.
2023-08-24 13:49:19 +02:00
alex.sharov
66d93f2489 rename torquem-ch project 2023-08-24 18:12:22 +07:00
alex.sharov
c6899ab0a9 rename torquem-ch project 2023-08-24 18:08:54 +07:00
Alex Sharov
2b6c21fddb
move mdbx to new org (#8061) 2023-08-24 18:00:24 +07:00
Andrew Ashikhmin
ece8010d0d
Remove unused transaction and node packets from eth/protocols (#8057)
Transactions are served by erigon-lib's txpool and we don't serve
NodeData.
2023-08-24 06:50:04 +02:00
Alex Sharov
65d8b1d328
metrics: prevent commit metrics duplication (#8059) 2023-08-24 09:24:02 +07:00
Giulio rebuffo
db4533acd0
fixed small inconsistency with sqlite3 (#8054) 2023-08-23 22:44:22 +02:00
Andrew Ashikhmin
83d767c861
Revert "EIP-4788: set nonce of beacon root history address to nonzero… (#8055)
[devnet-8](https://notes.ethereum.org/@ethpandaops/dencun-devnet-8)
doesn't include https://github.com/ethereum/EIPs/pull/7431 since it's
rendered obsolete by upcoming https://github.com/ethereum/EIPs/pull/7456
(to be implemented by PR #8038).

This reverts PR #7952.
2023-08-23 15:40:49 +02:00
battlmonstr
2e29ff33e1
bor: BroadcastNewBlock to all peers from validator nodes (#8030)
Currently PropagateNewBlockHashes and BroadcastNewBlock
selects a subset of all sentries by taking a `Sqrt(len(sentries))`,
and then for each sentry SendMessageToRandomPeers
selects a subset of its peers by taking `Sqrt(len(peerInfos))`.

This behaviour limits the broadcast scope with a lot of peers, e.g. 100
becomes 10,
but is not great with very few peers, or if the message is very
important
to broadcast to everyone, which is the case of bor validator/proposer
nodes.

* send to all sentries in both BroadcastNewBlock and PropagateNewBlockHashes
* remove peerCountConstrained sqrt logic in SendMessageToRandomPeers
* add maxPeers provider func as a parameter to MultiClient
* default it to 10 for eth and 0 (unlimited) for bor validators

---------

Co-authored-by: Mark Holt <mark@distributed.vision>
2023-08-23 14:28:39 +02:00
alex.sharov
7e8c1130b9 grafana version up 2023-08-23 12:25:22 +07:00
alex.sharov
02b7c28a94 bor: integration cmd support 2023-08-23 12:07:36 +07:00
Alex Sharov
523504c557
rapid lib support go21 (#8051) 2023-08-23 07:21:32 +07:00
Alex Sharov
af72e993cd
torrent lib to support go21 (#8050) 2023-08-23 07:15:42 +07:00
Alex Sharov
804248a528
disable linter which failing wihout enough info (#8049) 2023-08-23 06:56:35 +07:00
battlmonstr
a83a478bae
bor: fix panic reading total difficulty for isChainPoS (#8032)
because bor doesn't have headers,
ReadCurrentHeader returns nil as expected

refactor isChainPoS to only call ReadCurrentHeader/ReadTd if needed and
use chain config IDs
2023-08-22 13:40:36 +02:00
battlmonstr
b7c4dcd5d1
p2p: add sepolia DNS discovery host name (#8027) 2023-08-22 10:51:21 +02:00
battlmonstr
6c017c33f9
p2p: log NAT ExternalIP error (#8026) 2023-08-22 10:51:00 +02:00
battlmonstr
d2d261e560
cli: die if a config file is invalid (#8025) 2023-08-22 10:50:31 +02:00
battlmonstr
5b843fbddc
sentry: do not process empty responses (#8029)
if dropUselessPeers = false,
skip processing empty responses same as if it was true

Co-authored-by: Mark Holt <mark@distributed.vision>
2023-08-22 10:16:12 +02:00