-
Notifications
You must be signed in to change notification settings - Fork 0
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(primitives): new type for sector number #585
Merged
jmg-duarte
merged 10 commits into
develop
from
chore/129/refactor-sectornumber-in-primitives
Nov 21, 2024
Merged
feat(primitives): new type for sector number #585
jmg-duarte
merged 10 commits into
develop
from
chore/129/refactor-sectornumber-in-primitives
Nov 21, 2024
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
jmg-duarte
reviewed
Nov 18, 2024
aidan46
reviewed
Nov 19, 2024
aidan46
previously approved these changes
Nov 19, 2024
th7nder
requested changes
Nov 19, 2024
th7nder
previously approved these changes
Nov 20, 2024
jmg-duarte
reviewed
Nov 20, 2024
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 but some food for thought
th7nder
previously approved these changes
Nov 21, 2024
cernicc
added
ready for review
Review is needed
and removed
ready for review
Review is needed
labels
Nov 21, 2024
cernicc
added
ready for review
Review is needed
and removed
ready for review
Review is needed
labels
Nov 21, 2024
jmg-duarte
force-pushed
the
chore/129/refactor-sectornumber-in-primitives
branch
from
November 21, 2024 09:38
b15d8d9
to
6e19ff8
Compare
jmg-duarte
added
ready for review
Review is needed
and removed
ready for review
Review is needed
labels
Nov 21, 2024
jmg-duarte
added
ready for review
Review is needed
and removed
ready for review
Review is needed
labels
Nov 21, 2024
jmg-duarte
approved these changes
Nov 21, 2024
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.
🚀
th7nder
approved these changes
Nov 21, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Introduce a new type for SectorNumber that is used throughout the workspace. When you hold an instance of the SectorNumber you can know that the SectorNumber is in bounds and no additional checking is needed. The downside is, that there is much juggling between u64 and SectorNumber in tests. Outside of tests, the usage is almost similar as it was before.
The pr is big because of changes in tests.
Important
Let's break down the implementation and see if the safety benefits outweigh the additional complexity.
The SectorNumber needs to implement
Decode
. It's used by the runtime when decoding scale format to some runtime specific type. Implementation forwards the input to the u64 decoder and tries to initialize the SectorNumber.If the decoding fails there is a nice error log on the node achieved by adding
chain-error
to the codec:Bad input data provided to validate_transaction: Could not decode `RuntimeCall::StorageProvider.0`: Could not decode `Call::pre_commit_sectors::sectors`: Could not decode `SectorPreCommitInfo::sector_number`: Sector number is too large
The frontend gets a more cryptic error. I didn't find any approach that would made this error better. I think this is also a side effect of some unrelated error that happens while processing a block:
The sector number also implements
scale_decode::IntoVisitor
andscale_decode::Visitor
which is used by thesubxt
to decode types. This implementation replaces the auto derive ofDecideAsType
.Checklist