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.
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
Deep Freeze XLS-77d #2873
base: main
Are you sure you want to change the base?
Deep Freeze XLS-77d #2873
Changes from 1 commit
1d897a4
e942a4f
bb1463b
c9ecd33
3e8b726
bc43fad
4080c6f
369df85
284d1d7
587eda2
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
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.
🛠️ Refactor suggestion
Consider adding validation for mutually exclusive flags
The deep-freeze flags (
tfSetDeepFreeze
andtfClearDeepFreeze
) are mutually exclusive, similar to the existing freeze flags. Consider adding validation to prevent setting both flags simultaneously.Here's a suggested implementation:
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.
there are many validation rules associated with the flags of trust-set transaction. It is not informative if certain rules are cherry-picked for implementation
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.
@ckeshava Understood, I'll retract the suggestion. You make a valid point about the importance of comprehensive validation rather than selective implementation.
✏️ Learnings added
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'd actually agree with this one, seems like an important check we should add. We aren't responsible for core logic like determining if a trustline is frozen before deep freezing, but surface level checks should be handled here to best catch invalid transactions like this
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.
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.
@achowdhry-ripple I'm not entirely convinced that this is a feasible suggestion. There are many combination of invalid flags. For instance:
tfSetDeepFreeze | tfClearFreeze
,tfSetFreeze | tfClearDeepFreeze
... 2 more such combinations.We would need to enumerate all such possibilities (the above is not an exhaustive list). It also necessitates defining a mask of valid flags for easier validation.
This task goes out of scope of the current PR and would be a repetition of the cpp 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.
thats a good point, can leave this out
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.
could also possibly add a validation check that
tfSetDeepFreeze
andtfClearDeepFreeze
should not be set in the same transaction? And possibly add a unit test for this.unrelated to this PR, but a similar validation can be added for tfSetFreeze and tfClearFreeze to make sure they aren't set at the same time (and a unit test).
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.
Hmm, in the worst case, erring users will be greeted with a
temINVALID_FLAG
error here: https://github.com/XRPLF/rippled/blob/1b75dc8bcd536ff09a4d96064725c016e0df7293/src/xrpld/app/tx/detail/SetTrust.cpp#L42 (Users do not lose any transaction fees)I have elaborated here as well: #2873 (comment)
We will need to replicate the
tfTrustSetMask
variable to do a complete validation. It feels a bit of an overkill.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.
💡 Codebase verification
Remove the commented deep_freeze assertion
The
deep_freeze
flag is not part of the XRPL account_lines API. The trust line freeze functionality is handled by the documentedfreeze
andfreeze_peer
flags. This commented assertion should be removed as it references a non-existent feature.🔗 Analysis chain
Clarify the status of the commented assertion.
The commented assertion suggests that the
deep_freeze
flag in the account_lines RPC response might be pending implementation. This should be either:🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
Length of output: 38
Script:
Length of output: 83376
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.
fixed in c9ecd33
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.
@ckeshava Thank you for fixing this! The changes look good, and I appreciate the addition of proper deep-freeze verification using the account_objects RPC.
🔗 Analysis chain
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
Length of output: 3745
If you found this review helpful, would you consider giving us a shout-out on X?
Thank you for using CodeRabbit!
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.
🛠️ Refactor suggestion
Add test cases for high/low side deep freeze behavior.
The test suite should verify:
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.
these cases are covered by the cpp tests. they are not required in this repository
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.
@ckeshava Understood, thanks for clarifying that these test cases are already covered in the C++ implementation.
✏️ Learnings added