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

Blobtx mining + brodcasting #2253

Merged
merged 25 commits into from
Mar 13, 2024
Merged

Blobtx mining + brodcasting #2253

merged 25 commits into from
Mar 13, 2024

Conversation

emailtovamos
Copy link
Contributor

Description

add a description of your changes here...

Rationale

tell us why we need these changes...

Example

add an example CLI or API response...

Changes

Notable changes:

  • add each change in a bullet point here
  • ...

galaio and others added 7 commits February 27, 2024 10:40
* chainconfig: use cancun fork for BSC;
feat: fill WithdrawalsHash when BSC enable cancun fork;

* rawdb: support to CRUD blobs;
freezer: support to freeze block blobs;

* freezer: support to freeze block blobs;

* blockchain: add blob cache & blob query helper;

* blockchain: add blob cache & blob query helper;

* freezer: refactor addition table logic, add uts;

* blobexpiry: add more extra expiry time, and logs;

* ci: fix UT fails;

* fix: fix some PR review comments;

* parlia: implement IsDataAvailable function;

* blob: refactor blob transfer logic;

* blob: support config blob extra reserve;
core/types/block.go Outdated Show resolved Hide resolved
eth/handler_eth.go Show resolved Hide resolved
@emailtovamos emailtovamos marked this pull request as ready for review March 7, 2024 12:21
@emailtovamos emailtovamos requested a review from galaio March 7, 2024 12:22
cmd/devp2p/internal/ethtest/conn.go Outdated Show resolved Hide resolved
core/blockchain.go Outdated Show resolved Hide resolved
eth/fetcher/block_fetcher.go Outdated Show resolved Hide resolved
var packet BlockPacket

// First, try to decode as NewBlockPacket
nbp := new(NewBlockPacket)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we could add some UTs to check the decode is ok for the old msg and the new msg.

eth/handler.go Outdated Show resolved Hide resolved
eth/handler.go Outdated Show resolved Hide resolved
@@ -220,8 +220,29 @@ type NewBlockPacket struct {
TD *big.Int
}

type NewBlockWithBlobPacket struct {
Copy link
Collaborator

@zzzckck zzzckck Mar 11, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible that we don't add this new type, but to extend the NewBlockPacket, like:

type NewBlockPacket struct {
	Block *types.Block
	TD    *big.Int
        Sidecars types.BlobTxSidecars `rlp:"optional"`
}

Sidecars will be empty when broadcast block only. And Sidecars would contain payload if broadcast block with blobs

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed it in this commit: 851ae4a
Please check.

eth/protocols/eth/handlers.go Outdated Show resolved Hide resolved
@@ -352,8 +385,11 @@ func handleBlockBodies(backend Backend, msg Decoder, peer *Peer) error {
if body.Withdrawals != nil {
withdrawalHashes[i] = types.DeriveSha(types.Withdrawals(body.Withdrawals), hasher)
}
if body.Sidecars != nil {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the sidecarsHashes is useless, it cannot give help any validation. It can be removed. I think just modify DeliverBodies, and add blobs for fetchResult in reconstruct.

The importBlockResults in Downloader also need modify to append blobs.

for i, result := range results {
		blocks[i] = types.NewBlockWithHeader(result.Header).WithBody(result.Transactions, result.Uncles).WithWithdrawals(result.Withdrawals).WithBlobs(result.Blobs)
	}

if err := ann.sanityCheck(); err != nil {
return err
}

if hash := types.CalcUncleHash(ann.Block.Uncles()); hash != ann.Block.UncleHash() {
log.Warn("Propagated block has invalid uncles", "have", hash, "exp", ann.Block.UncleHash())
return nil // TODO(karalabe): return error eventually, but wait a few releases
Copy link
Contributor

@NathanBSC NathanBSC Mar 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

func handleBlockHeaders need some changes?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Header doesn't carry sidecar specific things. What change should be made?

Copy link
Contributor

@NathanBSC NathanBSC Mar 13, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry, I mean handleBlockBodies

@@ -37,12 +37,26 @@ type blockPropagation struct {
td *big.Int
}

// blockPropagation is a block propagation event, waiting for its turn in the
// broadcast queue.
type blockAndBlobPropagation struct {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is possible to reuse blockPropagation?
such things like

type blockPropagation struct {
	block *types.Block
	td    *big.Int
	sidecars types.BlobTxSidecars `rlp:"optional"`
}

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same question, we can also remove AsyncSendNewBlockAndBlob(...) if we reuse blockPropagation

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed AsyncSendNewBlockAndBlob() in this commit: 10cfa61

TD *big.Int
Block *types.Block
TD *big.Int
Sidecars *types.BlobTxSidecars `rlp:"optional"`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not use pointer, but array?
Sidecars []*BlobTxSidecar

Copy link
Collaborator

@zzzckck zzzckck left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@zzzckck zzzckck merged commit 1bd1313 into blobtx Mar 13, 2024
4 of 7 checks passed
buddh0 pushed a commit that referenced this pull request Mar 13, 2024
buddh0 pushed a commit that referenced this pull request Mar 19, 2024
buddh0 pushed a commit that referenced this pull request Mar 21, 2024
zzzckck pushed a commit that referenced this pull request Mar 22, 2024
* ci: temp enable blobtx branch ci run;
* Switch ON blobpool & ensure Cancun hardfork can occur (#2223)
* feat: support blob storage & miscs; (#2229)
* chainconfig: use cancun fork for BSC;
* feat: fill WithdrawalsHash when BSC enable cancun fork;
* rawdb: support to CRUD blobs;
* freezer: support to freeze block blobs;
* blockchain: add blob cache & blob query helper;
* freezer: refactor addition table logic, add uts;
* blobexpiry: add more extra expiry time, and logs;
* parlia: implement IsDataAvailable function;
* blob: refactor blob transfer logic;
* blob: support config blob extra reserve;
* blockchian: support to import block with blob & blobGasFee; (#2260)
* blob: implement min&max gas price logic;
* blockchian: support import side chain;
* blobpool: reject the banned address;
* blockchain: add chasing head for DA check;
* params: update blob related config;
* blockchain: opt data available checking performance;
* params: modify blob related params;
* gasprice: support BEP-336 blob gas price calculate;
* blobTx: mining + brodcasting (#2253)
* blobtx mining pass (#2282)
* Sidecar fetching changes for 4844 (#2283)
* ci: temp enable blobtx branch ci run;
* Switch ON blobpool & ensure Cancun hardfork can occur (#2223)
* feat: support blob storage & miscs; (#2229)
* chainconfig: use cancun fork for BSC;
feat: fill WithdrawalsHash when BSC enable cancun fork;
* rawdb: support to CRUD blobs;
* freezer: support to freeze block blobs;
* blockchain: add blob cache & blob query helper;
* freezer: refactor addition table logic, add uts;
* blobexpiry: add more extra expiry time, and logs;
* parlia: implement IsDataAvailable function;
* blob: refactor blob transfer logic;
* blob: support config blob extra reserve;
* blockchian: support to import block with blob & blobGasFee; (#2260)
* blob: implement min&max gas price logic;
* blockchian: support import side chain;
* blobpool: reject the banned address;
* blockchain: add chasing head for DA check;
* params: update blob related config;
* blockchain: opt data available checking performance;
* params: modify blob related params;
* gasprice: support BEP-336 blob gas price calculate;
* fix failed check for WithdrawalsHash (#2276)
* eth: include sidecars in fitering of body
* core: refactor sidecars name
* eth: sidecars type refactor
* core: remove extra from bad merge
* eth: fix handlenewblock test after merge
* Implement eth_getBlobSidecars && eth_getBlobSidecarByTxHash (#2286)
* execution: add blob gas fee reward to system;
* syncing: support blob syncing & DA checking;
* naming: rename blobs to sidecars;
* fix the semantics of WithXXX (#2293)
* config: reduce sidecar cache to 1024 and rename (#2297)
* fix: Withdrawals turn into empty from nil when BlockBody has Sidecars (#2301)
* internal/api_test: add test case for eth_getBlobSidecars && eth_getBlobSidecarByTxHash (#2300)
* consensus/misc: rollback CalcBlobFee (#2306)
* flags: add new flags to override blobs' params;
* freezer: fix blob ancient save error;
* blobsidecar: add new sidecar struct with metadata; (#2315)
* core/rawdb: optimize write block with sidecars (#2318)
* core: more check for validity of sidecars
* mev: add TxIndex for mev bid (#2325)
* remove useless Config() (#2326)
* fix WithSidecars (#2327)
* fix: fix mined block sidecar issue; (#2328)
* fix WithSidecars (#2329)

---------
Co-authored-by: GalaIO <GalaIO@users.noreply.github.com>
Co-authored-by: buddho <galaxystroller@gmail.com>
Co-authored-by: Satyajit Das <emailtovamos@gmail.com>
Co-authored-by: Eric <45141191+zlacfzy@users.noreply.github.com>
Co-authored-by: zzzckck <152148891+zzzckck@users.noreply.github.com>
@zzzckck zzzckck deleted the blobtx-mining branch August 22, 2024 03:05
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.

4 participants