-
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?
Changes from 1 commit
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 | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -250,8 +250,21 @@ impl Slate { | |||||||||||||||||||||||
tx | ||||||||||||||||||||||||
} | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
/// Create a new slate | ||||||||||||||||||||||||
/// Create a new slate with a plain kernel | ||||||||||||||||||||||||
pub fn blank(num_participants: u8, is_invoice: bool) -> Slate { | ||||||||||||||||||||||||
Slate::blank_with_kernel_features(num_participants, is_invoice, 0, None) | ||||||||||||||||||||||||
} | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
/// 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) | ||||||||||||||||||||||||
pub fn blank_with_kernel_features( | ||||||||||||||||||||||||
num_participants: u8, | ||||||||||||||||||||||||
is_invoice: bool, | ||||||||||||||||||||||||
kernel_feat_param: u8, | ||||||||||||||||||||||||
lock_height_param: Option<u64>, | ||||||||||||||||||||||||
) -> Slate { | ||||||||||||||||||||||||
Comment on lines
+262
to
+267
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. Would that makes sense to pass a kernel_features like that?
Suggested change
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 commentThe 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 commentThe 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 commentThe 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 commentThe reason will be displayed to describe this comment to others. Learn more. @quentinlesceller @phyro the Slate struct requires a 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. @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 👍 |
||||||||||||||||||||||||
let np = match num_participants { | ||||||||||||||||||||||||
0 => 2, | ||||||||||||||||||||||||
n => n, | ||||||||||||||||||||||||
|
@@ -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 commentThe reason will be displayed to describe this comment to others. Learn more. my guess is that 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. agreed, fixed |
||||||||||||||||||||||||
} else { | ||||||||||||||||||||||||
kernel_feat_param | ||||||||||||||||||||||||
}; | ||||||||||||||||||||||||
let is_height_locked = | ||||||||||||||||||||||||
lock_height_param.is_some() && (kernel_features == 2 || kernel_features == 3); | ||||||||||||||||||||||||
let kernel_feat_args = if is_height_locked { | ||||||||||||||||||||||||
Some(KernelFeaturesArgs { | ||||||||||||||||||||||||
lock_height: lock_height_param.unwrap(), | ||||||||||||||||||||||||
}) | ||||||||||||||||||||||||
} else { | ||||||||||||||||||||||||
None | ||||||||||||||||||||||||
}; | ||||||||||||||||||||||||
Slate { | ||||||||||||||||||||||||
num_participants: np, // assume 2 if not present | ||||||||||||||||||||||||
id: Uuid::new_v4(), | ||||||||||||||||||||||||
|
@@ -268,17 +295,18 @@ impl Slate { | |||||||||||||||||||||||
amount: 0, | ||||||||||||||||||||||||
fee_fields: FeeFields::zero(), | ||||||||||||||||||||||||
ttl_cutoff_height: 0, | ||||||||||||||||||||||||
kernel_features: 0, | ||||||||||||||||||||||||
kernel_features: kernel_features, | ||||||||||||||||||||||||
offset: BlindingFactor::zero(), | ||||||||||||||||||||||||
participant_data: vec![], | ||||||||||||||||||||||||
version_info: VersionCompatInfo { | ||||||||||||||||||||||||
version: CURRENT_SLATE_VERSION, | ||||||||||||||||||||||||
block_header_version: GRIN_BLOCK_HEADER_VERSION, | ||||||||||||||||||||||||
}, | ||||||||||||||||||||||||
payment_proof: None, | ||||||||||||||||||||||||
kernel_features_args: None, | ||||||||||||||||||||||||
kernel_features_args: kernel_feat_args, | ||||||||||||||||||||||||
} | ||||||||||||||||||||||||
} | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
/// Removes any signature data that isn't mine, for compacting | ||||||||||||||||||||||||
/// slates for a return journey | ||||||||||||||||||||||||
pub fn remove_other_sigdata<K>( | ||||||||||||||||||||||||
|
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.