-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
Conversation
pool: switch ON blobpool+no reannotx
* 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;
eth/protocols/eth/handlers.go
Outdated
var packet BlockPacket | ||
|
||
// First, try to decode as NewBlockPacket | ||
nbp := new(NewBlockPacket) |
There was a problem hiding this comment.
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/protocols/eth/protocol.go
Outdated
@@ -220,8 +220,29 @@ type NewBlockPacket struct { | |||
TD *big.Int | |||
} | |||
|
|||
type NewBlockWithBlobPacket struct { |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
@@ -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 { |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sorry, I mean handleBlockBodies
eth/protocols/eth/broadcast.go
Outdated
@@ -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 { |
There was a problem hiding this comment.
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"`
}
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
eth/protocols/eth/protocol.go
Outdated
TD *big.Int | ||
Block *types.Block | ||
TD *big.Int | ||
Sidecars *types.BlobTxSidecars `rlp:"optional"` |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
* 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 <[email protected]> Co-authored-by: buddho <[email protected]> Co-authored-by: Satyajit Das <[email protected]> Co-authored-by: Eric <[email protected]> Co-authored-by: zzzckck <[email protected]>
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: