-
Notifications
You must be signed in to change notification settings - Fork 1
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
commitBlobTransaction
: fix nil pointer
#23
base: op-es
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -389,14 +389,24 @@ func (miner *Miner) commitTransaction(env *environment, tx *types.Transaction) e | |
|
||
func (miner *Miner) commitBlobTransaction(env *environment, tx *types.Transaction) error { | ||
sc := tx.BlobTxSidecar() | ||
if sc == nil && env.isEffectivelySequencing() /* we want to allow blob tx without blobs when it's deriving */ { | ||
panic("blob transaction without blobs in miner") | ||
var nblobs int | ||
if sc == nil { | ||
if env.isEffectivelySequencing() /* we want to allow blob tx without blobs when it's deriving */ { | ||
panic("blob transaction without blobs in sequencing") | ||
} else { // deriving, which does not have the sidecar | ||
nblobs = len(tx.BlobHashes()) | ||
} | ||
} else { | ||
if !env.isEffectivelySequencing() { | ||
panic("blob transaction with blobs in derivation") | ||
} | ||
nblobs = len(sc.Blobs) | ||
} | ||
// Checking against blob gas limit: It's kind of ugly to perform this check here, but there | ||
// isn't really a better place right now. The blob gas limit is checked at block validation time | ||
// and not during execution. This means core.ApplyTransaction will not return an error if the | ||
// tx has too many blobs. So we have to explicitly check it here. | ||
if (env.blobs+len(sc.Blobs))*params.BlobTxBlobGasPerBlob > params.MaxBlobGasPerBlock { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If the issue is due to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sorry, I don't think so, more safety checking is better than no checking. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I mean check ("handle" is misleading) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should we check whether len(tx.BlobHashes()) matches len(sc.Blobs), or is this validation handled elsewhere in the code? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. When |
||
if (env.blobs+nblobs)*params.BlobTxBlobGasPerBlob > params.MaxBlobGasPerBlock { | ||
return errors.New("max data blobs reached") | ||
} | ||
receipt, err := miner.applyTransaction(env, tx) | ||
|
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.
@qizhou suggests addressing this case at line 392 to make the code self-explanatory and explicitly handle all possible scenarios.
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.
Done in 80a30e2.