Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes to enable stateless block execution in geth #26

Closed
wants to merge 223 commits into from

Conversation

gballet
Copy link
Owner

@gballet gballet commented Nov 8, 2021

This PR is here to keep track of the changes needed to enable stateless block execution in geth. It's removed from the original PR in order to reduce its file footprint.

karalabe and others added 30 commits October 1, 2021 11:47
internal/ethapi: support retrieving header RLPs too
* eth/tracers: fix calltracer fault handling

* eth/tracers: fix calltracer indentation
internal/ethapi: make header/block rlp retrieval canonical
The test did not synchronize with per-case goroutines, and thus didn't notice
that some tests were just hanging. This change adds missing synchronization
and fixes the broken tests.
…um#23646)

This PR adds a method to the debug namespace, to iterate over the blocks and check where we have the roots on disk.
This update includes fixes for the *BSD build and go module vendoring.
This resolves a long-standing TODO. The point of copying the address is
to ensure that all data referenced by types.Transaction is independent of the
data passed into the constructor.

Co-authored-by: Felix Lange <[email protected]>
This change removes misuses of sync.WaitGroup in BlockChain. Before this change,
block insertion modified the WaitGroup counter in order to ensure that Stop would wait
for pending operations to complete. This was racy and could even lead to crashes
if Stop was called at an unfortunate time. The issue is resolved by adding a specialized
'closable' mutex, which prevents chain modifications after stopping while also
synchronizing writers with each other.

Co-authored-by: Felix Lange <[email protected]>
…#23683)

Fixes ethereum#23681

After the fix I get the address 0x6d6d02e83c4ced98204e20126acf27e9d87b8af2 for the
tx mentioned in the ticket, which agrees with etherscan.
Go 1.17.2 fixes some miscompilation issues on amd64 and a runtime issue with timers.
While the upgrade is not strictly necessary for go-ethereum right now, it is still good
to be up-to-date.
This ensures that all miner goroutines have exited before stopping the blockchain. 

Co-authored-by: Felix Lange <[email protected]>
This fixes a data race on worker.current by moving the call to StopPrefetcher
into the main loop.

The commit also contains fixes for two other races in unit tests of unrelated packages.
node.Node no longer registers any account manager backends by default,
they need to be registered explicitly.

For ethash-based tests, we actually don't need any accounts in the miner
keystore. Just set the etherbase instead to make mining work. For
clique, the signer account must be in the keystore.

The change also adds interrupt handling in stress tests.
…3701)

This prevents the console from crashing when auto-completing on
a variable or property that is null or undefined.

Fixes ethereum#23693
* cmd/evm: t9n: validate transaction intrinsic gas

* cmd/evm: t9n: stricter tx validation
* build: increase thread stack size when running alpine linux

* review feedback: force a stack size of 8M on all linux distribs

* fix missing extldflags
)

* params: changed CatalystBlock to TerminalTotalDifficulty

* eth/catalyst: comment out unused code
* les/vflux/server: fix metrics

* les/vflux/server: fix metrics
* Update tests to showcase that forked blocks can still be looked up by their hash
This removes some code:

- The clique engine calculated the snapshot twice when verifying headers/blocks.

- The method GetBlockHashesFromHash in Header/Block/Lightchain was only used by tests. It
  is now removed from the API.
  
- The method GetTdByHash internally looked up the number before calling GetTd(hash, num).
  In many cases, callers already had the number, and used this method just because it has a
  shorter name. I have removed the method to make the API surface smaller.
@gballet gballet force-pushed the verkle-trie-proof-in-block-rebased branch 2 times, most recently from d0bcc59 to e1adb6f Compare March 25, 2022 10:26
@gballet gballet force-pushed the verkle-trie-proof-in-block-rebased branch from e1adb6f to dd6425e Compare March 25, 2022 10:29
@gballet
Copy link
Owner Author

gballet commented May 6, 2024

Not going to rebase this, Jared will work on a rewrite of the thing.

@gballet gballet closed this May 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.