-
Notifications
You must be signed in to change notification settings - Fork 134
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
Allowing the creation of height locked Slates Fixes #564 #565
base: master
Are you sure you want to change the base?
Conversation
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.
This change looks good to me. @antiochp @quentinlesceller, can one of you merge this?
libwallet/src/slate.rs
Outdated
@@ -260,6 +273,20 @@ impl Slate { | |||
true => SlateState::Invoice1, | |||
false => SlateState::Standard1, | |||
}; | |||
let kernel_features = if kernel_feat_param > 3 { | |||
0 |
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.
my guess is that kernel_feat_param
being > 3 means there's a bug, so is it possible that a panic would be better in this case?
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.
agreed, fixed
@antiochp @quentinlesceller do you guys think this one is good to merge? |
libwallet/src/slate.rs
Outdated
/// Create a new slate with custom kernel_feature and lock height | ||
/// If a lock_height is set kernel_features will have to be either HeightLocked (2) or NoRecentDuplicate (3) | ||
/// otherwise the value passed as lock_height will be ignored and a plain kernel will be created | ||
/// Invalid arguments for kernel_features (>3) will be set to 0 (Plain) |
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 we should update this comment as well now that we made it panic
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.
very true, thanks! Corrected the comment now.
blank_with_kernel_features mimblewimble#564
alright, @antiochp @quentinlesceller could one of you two also give it a quick look now and merge if it looks good? |
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.
Thank you for the PR @jafalter! I have a question regarding safety and possible simplification.
pub fn blank_with_kernel_features( | ||
num_participants: u8, | ||
is_invoice: bool, | ||
kernel_feat_param: u8, | ||
lock_height_param: Option<u64>, | ||
) -> Slate { |
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.
Would that makes sense to pass a kernel_features like that?
pub fn blank_with_kernel_features( | |
num_participants: u8, | |
is_invoice: bool, | |
kernel_feat_param: u8, | |
lock_height_param: Option<u64>, | |
) -> Slate { | |
pub fn blank_with_kernel_features( | |
num_participants: u8, | |
is_invoice: bool, | |
kernel_features: KernelFeatures, | |
) -> Slate { |
That would avoid to have the whole parsing and possible panic in here.
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 agree with this suggestion, doing it in this way also doesn't need code modification if/when we add new kernel features 👍
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.
@jafalter pinging just in case it was forgotten
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.
Thanks, I will do that. But I just need to doublecheck because I remember one of the types was not publicly visible I think that is why I did it like that.
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.
@quentinlesceller @phyro the Slate struct requires a Option<KernelFeaturesArgs>
see:
KernelFeaturesArgs
is not a publicly visible struct, therefore can't be passed as the parameter. Using KernelFeatures
as you recommended would require bigger refactoring of the Slate struct, this is why I went for this solution.
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.
@jafalter sorry for the late response. I see, in this case I'm ok if we go this way and we can possibly refactor this later 👍
cc: @quentinlesceller
is that forgotten? |
Created new function
blank_with_kernel_features
which takes (compared to the regularblank(num_participants: u8, is_invoice: bool))
the additional parameterskernel_feat_param: u8,
andlock_height_param: Option<u64>
such that one can create a slate with a height locked kernel.This fixes the issue #564
I have adjusted
blank(num_participants: u8, is_invoice: bool)
to use this new function to avoid code duplication.