-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
feat(protocol)!: reserve 2 slots for TaikoData.Transition [wait for base PR to be merged first] #15711
feat(protocol)!: reserve 2 slots for TaikoData.Transition [wait for base PR to be merged first] #15711
Conversation
This reverts commit 08c0ae2.
TaikoData.Transition memory tran = TaikoData.Transition({ | ||
parentHash: parentHash, | ||
blockHash: blockHash, | ||
stateRoot: stateRoot, | ||
graffiti: 0x0 | ||
}); | ||
TaikoData.Transition memory tran; | ||
tran.parentHash = parentHash; | ||
tran.blockHash = blockHash; | ||
tran.stateRoot = stateRoot; |
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 would still use the normal struct initialization, otherwise if the struct does still change it will be tricky to track all the places it needs to be updated. (Generally it's even more gas efficient like that because I think now solidity zeros the memory first and then needs to still overwrite it anyway, but the difference is so small it doesn't really matter).
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 in test the current approach is fine. And even if we use the "normal struct initialisation", we cannot prevent individual fields from being reassigned new values. We still have to know what shall be assigned and what shall not.
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.
Reassigning is a good thing I feel because it's a conscious decision. Compared to forgetting to set something to the correct updated value, that's not so good.
But for tests indeed not so important except a bit harder to maintain the code.
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.
Closed this one to use #15716
No description provided.