Skip to content

Simulated backend - enable proof of stake consensus type and fix performance issue#8

Merged
mslipper merged 2 commits intooptimism-historyfrom
simulated-backend-pos
Sep 26, 2022
Merged

Simulated backend - enable proof of stake consensus type and fix performance issue#8
mslipper merged 2 commits intooptimism-historyfrom
simulated-backend-pos

Conversation

@protolambda
Copy link
Copy Markdown
Contributor

Description

This PR:

  • Adds a consensus.Engine option to the simulated backend. This enables us to use the proof of stake consensus.
    • Note that the proof of stake consensus does not have the same timestamp range issues, unlike clique and ethash:
      • clique header verification checks timestamp with 0s margin
      • ethash header verification checks timestamp with 15s margin
    • Since the simulated backend uses a 10s block time internally, the above is a big issue, causing blocks to get stuck until the futureBlocks in the Blockchain is emptied. This used to force us to wait until the background job clears that queue, and the polling was slow with a second interval.
  • Updated the Commit in simulated backend to immediately index the transactions. The receipts and block are indexed already, assuming the block does not end up in the future blocks queue. Indexing txs of future blocks is not dangerous; the same can happen with orphaned blocks etc.
  • Fix IsTTDReached in case of Merge activation at genesis. This is used in difficulty calculation in the testing chain/block building code.
    • Note that the test block builder doesn't even pass the proper parent header, but a half-initialized partial parent header, and the "chain reader" is a chain reader that can't read TD values from the db. So instead of using those input arguments, we just fall back to the simple case "if TTD is 0, then everything passed TTD", even though it doesn't strictly cover everything.

Tests

This modifies testing code.

Additional context

Tested against op-e2e and new action testing draft. Makes the genesis setup instant, no polling for receipts anymore.

Metadata

Part of ENG-2755

@mslipper mslipper merged commit 53d23c2 into optimism-history Sep 26, 2022
mdehoog pushed a commit to mdehoog/op-geth that referenced this pull request Oct 10, 2022
protolambda added a commit that referenced this pull request Nov 4, 2022
…ormance issue (#8)

* accounts: simulated backend consensus engine option and immediate tx indexing

* consensus/beacon: recognize all blocks as reached TTD with 0 TTD in chain config
protolambda added a commit that referenced this pull request Feb 22, 2023
This commit squashes the op-geth fork history into a more maintainable
diff for rebasing upon upstream geth.

reference-optimistic-geth changes (origins of op-geth in early Bedrock
development stage):
- Deposit TX Type
- Enable deposit tx in EVM/tx pool
- Change deposit nonce to not be the max nonce
- Extend PayloadAttributesV1 with a Transactions field
- Force deposits at the start of each L2 block
- Fix height check
- noTxPool flag, reproduce block in verifier mode without tx pool interference
- Fix RPC json marshalling (ref op-geth PR 4)
- Deposit txs block height check in block body validation (ref op-geth PR 5)
- core: do not try to reinject deposit txs into tx-pool (ref-op-geth PR 6)
- deposit source hash field instead of L2 block height and tx index combination
- Include invalid deposits, rewind state, but always persist mint (#10)
- Provide gas to Call/Create in deposit transactions (#12)
- Add docker builds (ref-op-geth PR 16, 17)
- Don't panic on deposit transaction signature values or chain ID (ref-op-geth PR 18)
- core: Add version to DepositTx (ref-op-geth PR 19)
- Enable Geth build/lint/test in CircleCI (ref-op-geth PR 23)
- core: Include guaranteed gas in the gas pool (ref-op-geth PR 21)
- core: handle base fee, l1 availability fee, tx fee (ref-op-geth PR 27)
- fix: deposit tx hash
- fix l1 fee cache, rpc, tracing and tx pool
- core: remove deposit-tx sub-type (a.k.a. deposit version byte)
- eth/catalyst: allow engine user to reorg own chain
- miner: restore ability to reorg deep as block builder
- params: print Optimism consensus type in banner
- core/types: remove unused protected() method, see upstream PR 23376
- core: do not mutate original balance value in tx pool l1 cost adjustment
- core: subtract deposit gas from pool, so other txs do not use the same gas. And fail tx processing if deposits reach gas limit
- core/types: deposits do not tip, avoid basefee subtraction
- Unmeter the L1 Attributes Transaction
- miner: handle force tx errors as critical, clean up diff
- ci: Switch branch
- eth,miner: return STATUS_INVALID when failing to process forced transactions in request (ref-op-geth PR 40)
- verifier: forward tx to sequencer based on flag
- txpool: add flag to disable tx gossip (ref-op-geth PR 42)
- Add op-geth version in addition to geth version (ref-op-geth PR 43)
- ci: CircleCI improvements (ref-op-geth PR 44)
- Rename to op-geth
- Build latest tag on optimism branch

op-geth changes:
- Expose cache config in simulated backend (#2)
- Add EIP-1559 parameters
- eth/catalyst: update payload id computation (#1)
- make eip1559 configurable (#4)
- post-merge network should not log warnings about missing transition information (#5)
- Make the simulator more configurable (#6)
- fix OPB-6 - IsDepositTx check instead of artificial nonce value check (#7)
- Simulated backend - enable proof of stake consensus type and fix performance issue (#8)
- accounts: simulated backend consensus engine option and immediate tx indexing
- consensus/beacon: recognize all blocks as reached TTD with 0 TTD in chain config
- Add --rollup.historicalhttp CLI flag and fix backend iface
- Flags and interfaces for historical RPC requests (#12)
- Redirect historical RPC requests (#13)
- Use the pre-existing ethereum.NotFound error (#18)
- Add historical endpoint to TraceBlockByNumber and TraceBlockByHash (#19)
- Add historical endpoint to TraceTransaction (#20)
- Add historical endpoint to TraceCall (#21)
- optimism: fee params from info txi, update l1 cost func GPO params read (#15)
- add hardcoded addresses for fee payouts (#23)
- dynamic gas limit via engine API (#22)

Co-authored-by: Matthew Slipper <me@matthewslipper.com>
Co-authored-by: Joshua Gutow <jgutow@oplabs.co>
Co-authored-by: protolambda <proto@protolambda.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Maurelian <maurelian@protonmail.ch>
joey0612 pushed a commit to joey0612/op-geth that referenced this pull request Feb 20, 2024
kangsorang pushed a commit to kroma-network/7560-geth that referenced this pull request Oct 15, 2024
* remove stub message

was created just to create the vm.Txontext

* update
blockchaindevsh added a commit to blockchaindevsh/op-geth that referenced this pull request Oct 28, 2024
emilianobonassi pushed a commit to emilianobonassi/op-geth that referenced this pull request Feb 7, 2025
using alpine image for debugging tools in Docker image
kchojn referenced this pull request in compose-network/op-geth Oct 14, 2025
* Add sequencers CIRC messages exchange

* Add CIRC message send example

* Copy shared-publisher dependencies to fix ci build
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.

2 participants