hyperledger / besu

An enterprise-grade Java-based, Apache 2.0 licensed Ethereum client https://wiki.hyperledger.org/display/besu
https://www.hyperledger.org/projects/besu
Apache License 2.0
1.51k stars 838 forks source link

Add a command line argument to allow me to set max blobs if Im a proposer #7683

Open rolfyone opened 1 month ago

rolfyone commented 1 month ago

Sometimes there's a confluence of circumstances that ends up meaning that a solo staker may be proposing, with a local EL building, and needing to include 6 blobs currently.

Because of a number of factors, this may mean a large volume of data (roughly 80-100MB for 6 blobs - corrected down after twitter discussion) being pushed out of a home internet which may only be ADSL, and this can ultimately lead to missed block proposals.

As a home staker, I would like to be able to dictate the maximum number of blobs for inclusion in a block that I'm building, so that I can have the best chance of publishing the block for inclusion.

Clearly this still needs to apply normal max rules, so if i set --max-blobs=1000, that would be invalid, but I'd like to be able to do something like set --max-blobs=3, or even --max-blobs=1 if i know that I'm unlikely to be able to publish larger volumes of data given my internet circumstances.

There's also no financial incentive for a block producer to produce large amounts of blob data, so the fact that these large objects can ruin my proposals seems very unfair. I'd rather get a block out in time than miss a proposal completely.

Deepcryptodive commented 1 month ago

Yes please! I'm a home staker doing local building and would use this.

Currently I'm using Starlink as ISP, and bandwith can be an issue sometimes!

jflo commented 1 month ago

There is no option to fine-tune the number of blobs to include in a produced block, however the inclusion of blobs can be disabled altogether using the existing tx-pool-max-prioritized-by-type configuration option but the validator would have to be willing to forfeit the blob fees for their proposed block.

benaadams commented 1 month ago

Similar request in Nethermind https://github.com/NethermindEth/nethermind/issues/7502

benjaminion commented 1 month ago

There is no option to fine-tune the number of blobs to include in a produced block, however the inclusion of blobs can be disabled altogether using the existing tx-pool-max-prioritized-by-type configuration option

Can you clarify the syntax for this? When I put the following in the config file (as per the example in the docs):

tx-pool-max-prioritized-by-type="BLOB=0"

I get this error on startup:

TomlInvalidTypeException: Value of 'tx-pool-max-prioritized-by-type' is a string while processing argument at or before arg[1] '/etc/besu/besu.toml' in [--config-file, /etc/besu/besu.toml]: org.apache.tuweni.toml.TomlInvalidTypeException: Value of 'tx-pool-max-prioritized-by-type' is a string

I have tried many variants of this (adding escaped quotes around "0", changing up the quotation mark types, omitting the quotation marks...), but no success.

jflo commented 1 month ago

You've found a documentation error, thank you. The value for the option is an array:

tx-pool-max-prioritized-by-type=["BLOB=0","FRONTIER=200"]

is how it is tested (successfully) in our test suite.