erigon-pulse/turbo
Mark Holt b05ffc909d
Fixes for Bor Block Production Synchronization (#9162)
This PR contains 3 fixes for interaction between the Bor mining loop and
the TX pool which where causing the regular creation of blocks with zero
transactions.

* Mining/Tx pool block synchronization
The synchronization of the tx pool between the sync loop and the mining
loop has been changed so that both are triggered by the same event and
synchronized via a sync.Cond rather than a polling loop with a hard
coded loop limit. This means that mining now waits for the pool to be
updated from the previous block before it starts the mining process.
* Txpool Startup consolidated into its MainLoop
Previously the tx pool start process was dynamically triggered at
various points in the code. This has all now been moved to the start of
the main loop. This is necessary to avoid a timing hole which can leave
the mining loop hanging waiting for a previously block broadcast which
it missed due to its delay start.
* Mining listens for block broadcast to avoid duplicate mining
operations
The mining loop for bor has a recommit timer in case blocks re not
produced on time. However in the case of sprint transitions where the
seal publication is delayed this can lead to duplicate block production.
This is suppressed by introducing a `waiting` state which is exited upon
the block being broadcast from the sealing operation.
2024-01-10 17:12:15 +00:00
..
adapter Sentinel refactor (#8296) 2023-10-22 01:17:18 +02:00
app [E3] Some fixes for the in-memory database when working with Caplin (… (#9164) 2024-01-09 08:26:26 +07:00
backup touch data when do warmup (#8268) 2023-09-22 14:36:54 +07:00
builder turbo: run tests in parallel (#8738) 2023-11-16 16:29:31 +07:00
cli Fixes for Bor Block Production Synchronization (#9162) 2024-01-10 17:12:15 +00:00
cmdtest move all packages from "internal" folder - to simplify users live (#5857) 2022-10-25 09:58:25 +07:00
debug E2 snapshot uploading (#9056) 2023-12-27 22:05:09 +00:00
engineapi [E3] Some fixes for the in-memory database when working with Caplin (… (#9164) 2024-01-09 08:26:26 +07:00
execution/eth1 [E3] Some fixes for the in-memory database when working with Caplin (… (#9164) 2024-01-09 08:26:26 +07:00
jsonrpc bor: move to polygon directory (#9174) 2024-01-09 19:20:42 +01:00
logging E2 snapshot uploading (#9056) 2023-12-27 22:05:09 +00:00
mock reference hash, address, and chain config from lib (#6536) 2023-01-13 18:12:18 +00:00
node Add support for amoy testnet (#8674) 2023-11-30 08:19:52 +07:00
rlphacks turbo: run tests in parallel (#8738) 2023-11-16 16:29:31 +07:00
rpchelper bor: move to polygon directory (#9174) 2024-01-09 19:20:42 +01:00
services E2 snapshot uploading (#9056) 2023-12-27 22:05:09 +00:00
shards turbo: run tests in parallel (#8738) 2023-11-16 16:29:31 +07:00
silkworm silkworm: make install (#8985) 2023-12-14 21:45:18 +07:00
snapshotsync Fixes for Bor Block Production Synchronization (#9162) 2024-01-10 17:12:15 +00:00
stages Fixes for Bor Block Production Synchronization (#9162) 2024-01-10 17:12:15 +00:00
testlog Introduce logger into etl (#7537) 2023-05-18 21:20:07 +01:00
transactions bor: move to polygon directory (#9174) 2024-01-09 19:20:42 +01:00
trie Bor proof findpath (#8764) 2023-11-17 16:39:59 +00:00
README.md Rename to Erigon (#2018) 2021-05-26 11:35:39 +01:00

Erigon-API

Erigon-API is a set of tools for building applications containing Erigon node.

Our own binary erigon is built using it.

Modules

  • cli - erigon-cli, methods & helpers to run a CLI app with Erigon node.

  • node - represents an Ethereum node, running devp2p and sync and writing state to the database.

  • stagedsync - staged sync algorithm.

Examples

  • erigon - our binary is using erigon-api with all defaults

  • erigoncustom - a very simple example of adding a custom stage, a custom bucket and a custom command-line parameter

  • erigon-examples - a series of examples for Erigon api