Commit graph

649 commits

Author SHA1 Message Date
Manav Darji
f697044bb3
Merge branch 'develop' into manav/upstream_merge_v1.14.13 2025-05-07 21:35:49 +05:30
Manav Darji
adad83d6ac
consensus/bor: add span store abstraction for stateless verification (#1472)
Add a new abstraction called span store in bor consensus. This makes the header verification stateless as instead of fetching validator set (of a span) from genesis contract, we rely on span from heimdall itself for validator set. This doesn't change any assumptions for consensus as the data in genesis contracts is written by fetching span details from heimdall in the first place. 

This helps us with multiple things such as header verification for snap sync, validating producer set against header's extra data, and using heimdall as a source of truth instead of making a contract call to genesis contract which generally leads to issues when importing side chains (as we need to use the side chain state and not canonical). 

Span store is a minimal cache which maintains last 10 spans in memory. It provide simple read methods via span id and block number so that we can use it in consensus.
2025-05-07 21:34:12 +05:30
Manav Darji
eb7f26f380
(fix): check for bor config when enabling prague requests 2025-03-28 11:42:27 +05:30
Manav Darji
1e75ff6109
fix linters 2025-03-26 19:33:36 +05:30
Manav Darji
88147109be
miner: remove payload building tests, fixes in worker test 2025-03-26 11:58:03 +05:30
Manav Darji
a6c89c1cff
miner: handle requests in block building 2025-03-26 11:14:24 +05:30
Manav Darji
1acf5e6eb0
Merge tag 'v1.14.13' into manav/upstream_merge_v1.14.13 2025-03-24 21:45:55 +05:30
Lucca Martins
2df763df60
Revert "removing requests from bor"
This reverts commit ccede75223.
2025-02-20 14:04:48 -03:00
Lucca Martins
2b0c071db7
lint fix 2025-02-20 11:05:37 -03:00
Lucca Martins
ccede75223
removing requests from bor 2025-02-20 11:03:17 -03:00
Lucca Martins
39968d1a98
Merge branch 'manav/fix-worker-test' into lmartins/upstream_merge_v1.14.10 2025-02-17 15:16:27 -03:00
Manav Darji
baea4afdbd
miner: wait for next block before running commit interrupt tests 2025-02-17 21:38:15 +05:30
Lucca Martins
5687bba178
Merge remote-tracking branch 'origin/develop' into lmartins/upstream_merge_v1.14.10 2025-02-11 08:22:18 -03:00
Manav Darji
1f2529fa0f
miner: add commit interrupt tests for non-validator mode (#1441)
This PR adds a test which verifies the working of miner module when running on a sentry (non-validator) node. It tries to disable the normal mining flow and trigger it via the new transactions subscription channel and asserts mainly 2 things
- Interrupt commit works and breaks execution when the time crosses deadline (i.e. header.Timestamp)
- Mining is not triggered when we've already crossed the deadline
2025-02-11 12:57:56 +05:30
Lucca Martins
0873515bcf
Merge remote-tracking branch 'origin/upstream_merge_v1.14.8' into lmartins/upstream_merge_v1.14.10 2025-02-11 03:51:43 -03:00
Manav Darji
466ff66f4e
miner: reset ctx timeout before commit tx on new tx notif (#1434)
* miner: reset ctx before commit transactions in main loop

* miner: log error in tx interrupt

* miner: typo

* worker: handle commit interrupt for new tx processing
2025-02-10 08:11:59 -08:00
Lucca Martins
26ec762a11
Merge remote-tracking branch 'origin/upstream_merge_v1.14.8' into lmartins/upstream_merge_v1.14.10 2025-02-04 10:35:52 -03:00
Lucca Martins
fc2198bedd
Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
Manav Darji
a2f545573c
miner: get rid of test_backend helper functions (#1424)
* initial work for removing tracing from worker

* fix more things

* miner: sync code with worker.go, remove traces

* fix lint

* miner, core: get rid of test_backend helper functions

* miner: handle delay during tests in block building

* fix lint

* miner: reset context to get rid of parent timeout context

* miner: refactor test
2025-01-30 23:07:58 +05:30
Manav Darji
8a1e0ec125
Enforce parallel evm via flag (#1425)
* (feat): implement --parallelevm.enforce to force using block-stm

* core: debug log

* docs: update docs with new flag

* update all config files

* core: modify chain import test to enforce parallel processing
2025-01-30 23:01:27 +05:30
Manav Darji
9da0432ec2
miner, consensus, core: remove tracing in mining workflow (#1422)
This PR removes open telemetry based tracing from the whole mining workflow. The tracing extended into consensus and core blockchain functions from miner is also removed in this PR. We weren't checking the tracing from a long time and the way it was implemented increased the code complexity a lot.
2025-01-30 22:27:03 +05:30
Péter Szilágyi
c6823c77a3 consensus/clique, miner: remove clique -> accounts dependency (#30642)
Clique currently depends on the `accounts` package. This was a bit of a
big cannon even in the past, just to pass a signer "account" to the
Clique block producer. Either way, nowadays Geth does not support clique
mining any more, so by removing that bit of functionality from our code,
we can also break this dependency.

Clique should ideally be further torn out, but this at least gets us one
step closer to cleanups.
2024-11-19 14:50:11 +01:00
lightclient
5d41ac58a8 miner: send full request when resolving full payload (#30615)
Fixes an issue missed in #30576 where we send empty requests for a full
payload being resolved, causing hash mismatch later on when we get the
payload back via `NewPayload`.
2024-11-19 14:50:11 +01:00
Felix Lange
b755cec854 beacon/engine: strip type byte in requests (#30576)
This change brings geth into compliance with the current engine API
specification for the Prague fork. I have moved the assignment of
ExecutionPayloadEnvelope.Requests into BlockToExecutableData to ensure
there is a single place where the type is removed.

While doing so, I noticed that handling of requests in the miner was not
quite correct for the empty payload. It would return `nil` requests for
the empty payload even for blocks after the Prague fork. To fix this, I
have added the emptyRequests field in miner.Payload.
2024-11-19 14:50:11 +01:00
Felix Lange
bee38ebb39 all: implement EIP-7002 & EIP-7251 (#30571)
This is a redo of #29052 based on newer specs. Here we implement EIPs
scheduled for the Prague fork:

- EIP-7002: Execution layer triggerable withdrawals
- EIP-7251: Increase the MAX_EFFECTIVE_BALANCE

Co-authored-by: lightclient <lightclient@protonmail.com>
2024-11-19 14:50:11 +01:00
Felix Lange
c93656f18e all: implement flat deposit requests encoding (#30425)
This implements recent changes to EIP-7685, EIP-6110, and
execution-apis.

---------

Co-authored-by: lightclient <lightclient@protonmail.com>
Co-authored-by: Shude Li <islishude@gmail.com>
2024-11-19 14:50:11 +01:00
Péter Szilágyi
9326a118c7
beacon, core, eth, miner: integrate witnesses into production Geth (#30069)
This PR integrates witness-enabled block production, witness-creating
payload execution and stateless cross-validation into the `engine` API.
The purpose of the PR is to enable the following use-cases (for API
details, please see next section):

- Cross validating locally created blocks:
- Call `forkchoiceUpdatedWithWitness` instead of `forkchoiceUpdated` to
trigger witness creation too.
- Call `getPayload` as before to retrieve the new block and also the
above created witness.
- Call `executeStatelessPayload` against another client to
cross-validate the block.

- Cross validating locally processed blocks:
- Call `newPayloadWithWitness` instead of `newPayload` to trigger
witness creation too.
- Call `executeStatelessPayload` against another client to
cross-validate the block.

- Block production for stateless clients (local or MEV builders):
- Call `forkchoiceUpdatedWithWitness` instead of `forkchoiceUpdated` to
trigger witness creation too.
- Call `getPayload` as before to retrieve the new block and also the
above created witness.
- Propagate witnesses across the consensus libp2p network for stateless
Ethereum.

- Stateless validator validation:
- Call `executeStatelessPayload` with the propagated witness to
statelessly validate the block.

*Note, the various `WithWitness` methods could also *just be* an
additional boolean flag on the base methods, but this PR wanted to keep
the methods separate until a final consensus is reached on how to
integrate in production.*

---

The following `engine` API types are introduced:

```go
// StatelessPayloadStatusV1 is the result of a stateless payload execution.
type StatelessPayloadStatusV1 struct {
	Status          string      `json:"status"`
	StateRoot       common.Hash `json:"stateRoot"`
	ReceiptsRoot    common.Hash `json:"receiptsRoot"`
	ValidationError *string     `json:"validationError"`
}
```

- Add `forkchoiceUpdatedWithWitnessV1,2,3` with same params and returns
as `forkchoiceUpdatedV1,2,3`, but triggering a stateless witness
building if block production is requested.
- Extend `getPayloadV2,3` to return `executionPayloadEnvelope` with an
additional `witness` field of type `bytes` iff created via
`forkchoiceUpdatedWithWitnessV2,3`.
- Add `newPayloadWithWitnessV1,2,3,4` with same params and returns as
`newPayloadV1,2,3,4`, but triggering a stateless witness creation during
payload execution to allow cross validating it.
- Extend `payloadStatusV1` with a `witness` field of type `bytes` if
returned by `newPayloadWithWitnessV1,2,3,4`.
- Add `executeStatelessPayloadV1,2,3,4` with same base params as
`newPayloadV1,2,3,4` and one more additional param (`witness`) of type
`bytes`. The method returns `statelessPayloadStatusV1`, which mirrors
`payloadStatusV1` but replaces `latestValidHash` with `stateRoot` and
`receiptRoot`.
2024-09-20 16:43:42 +03:00
rjl493456442
623b17ba20
core/state: state reader abstraction (#29761)
This pull request introduces a state.Reader interface for state
accessing.

The interface could be implemented in various ways. It can be pure trie
only reader, or the combination of trie and state snapshot. What's more,
this interface allows us to have more flexibility in the future, e.g.
the
archive reader (for accessing archive state).

Additionally, this pull request removes the following metrics

- `chain/snapshot/account/reads`
- `chain/snapshot/storage/reads`
2024-09-05 13:10:47 +03:00
anshalshukla
a66305dae3
fix: lint, add: milestone related tests in downloader 2024-09-05 14:03:10 +05:30
Marius van der Wijden
b0b67be0a2
all: remove forkchoicer and reorgNeeded (#29179)
This PR changes how sidechains are handled. 

Before the merge, it was possible to import a chain with lower td and not set it as canonical. After the merge, we expect every chain that we get via InsertChain to be canonical. Non-canonical blocks can still be inserted
with InsertBlockWIthoutSetHead.

If during the InsertChain, the existing chain is not canonical anymore, we mark it as a sidechain and send the SideChainEvents normally.
2024-09-04 15:03:06 +02:00
lightclient
dfd33c7792
all: implement EIP-6110, execution layer triggered deposits (#29431)
This PR implements EIP-6110: Supply validator deposits on chain. It also sketches
out the base for Prague in the engine API types.
2024-09-04 14:33:51 +02:00
anshalshukla
43043ed7ec
fix: few linting errors 2024-09-02 11:00:33 +05:30
anshalshukla
fc30355849
fix: TestRPCGetTransactionReceiptsByBlock 2024-09-01 13:36:21 +05:30
anshalshukla
9f94e3ec6a
fix: commit logic 2024-08-31 16:05:47 +05:30
anshalshukla
da49748cd2
fix: Eth2NewBlock, add: tip check in commit txn 2024-08-31 14:53:02 +05:30
Sina M
a223efcf39
core: implement EIP-2935 (#29465)
https://eips.ethereum.org/EIPS/eip-2935

---------

Co-authored-by: Guillaume Ballet <gballet@gmail.com>
Co-authored-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Martin HS <martin@swende.se>
2024-08-26 10:39:35 +02:00
anshalshukla
f88af20009
fix: testcases 2024-08-21 23:25:11 +05:30
anshalshukla
4a9a875738
merge: master 2024-08-13 11:48:57 +05:30
anshalshukla
e6132fdf1e
fix: testcases 2024-08-09 11:59:34 +05:30
Anshal Shukla
dbf55ce6cc
Merge tag 'v1.14.6' into upstream_merge_1.14.6 2024-08-05 16:29:10 +05:30
Darioush Jalali
ff6e43e8c4
miner: remove outdated comment (#30248) 2024-08-01 16:06:43 +02:00
Pratik Patil
6939df80da
replaced 4337 with PIP-15 2024-07-30 10:00:12 +05:30
Manav Darji
dce4253605
PIP-35: enforce gas related configs for mainnet (#1290)
* enforce gas configs for all networks

* eth/gasprice: remove else if for log

* docs/cli: update example config

* fix tests

* internal/cli/server: fix tests

* miner: fix tests
2024-07-23 19:32:48 +05:30
Manav Darji
67159969e0
miner: log last tx hash before commit interrupt (#1289) 2024-07-11 14:08:07 +05:30
Manav Darji
1a05223076
PIP-35 for amoy: enforce gas related configs (#1285)
* enforce gas related configs for amoy

* internal/cli/server: revert changes to default config.toml for test

* eth: check nil genesis for tests
2024-07-11 11:05:12 +05:30
Anshal Shukla
f4c41e2e70
Merge branch 'release/1.13' into upstream_merge_1.13 2024-07-10 11:19:34 +05:30
Marcello Ardizzone
d67620c8f4
core, eth, internal, miner, params: enforce 30gwei for gas related configs in bor (#1264)
* add: enforce 30gwei for gas related configs in bor

* chg: fix lint
2024-06-12 14:41:25 +05:30
Péter Szilágyi
2613523cb5
miner: lower default min miner tip from 1 gwei to 0.001 gwei (#29895) 2024-05-31 10:39:40 +03:00
Pratik Patil
6a5c55266e
Merge branch 'develop' of https://github.com/maticnetwork/bor into upstream_merge 2024-05-28 17:20:23 +05:30
Pratik Patil
052405b03e
Revert "Merge upstream_merge branch to develop (#1229)"
This reverts commit 7e2be02c26.
2024-05-28 14:10:49 +05:30