-
Notifications
You must be signed in to change notification settings - Fork 7
feat: High-Security Integration for Multisig Pallet #365
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
base: testnet/planck
Are you sure you want to change the base?
Conversation
|
Gemini Review: Security: The implementation includes good defense-in-depth measures, such as checking call size before decoding. The documentation regarding the "Risk Window" during migration is clear and helpful. Code Quality: The refactoring in transaction_extensions.rs to share the whitelist logic with the multisig configuration is excellent. 1. Architecture & Dependency ManagementObservation:
Recommendation: Invert this dependency to keep
It kinda makes sense ^^^ |
ethan-crypto
left a comment
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.
One issue I noticed is that in the benchmarks we aren't actually computing the worst-case for the cleanup process because we aren't setting the call data to the max size for the expired proposals. This could lead to underweighting.
ethan-crypto
left a comment
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.
-
Right now we aren't making an effective use of the
rregression coefficient. I suggested some changes that would account for this by defining acleaned_target = i.min(r)which will only clean a subset of the total proposals, resulting in a more accurate weighting and a greater refund forproposalcalls -
The cleanup path remains expensive per proposal as long as call lives inside the same storage value. We should make the cleanup iteration cost depend only on the small fields we care about. To fix this we could either go with a split storage approach:
ProposalMeta (small: proposer/status/expiry/deposit/…) used by cleanup iteration
ProposalCall (big) only touched on execute / remove
OR store call as a preimage / hash (call_hash, call_len) and require bytes only when executing.
|
Proposal meta is a really good optimization @ethan-crypto Basically don't have to decode the call just to find the expiry date There's many ways to do this |
|
Finally, we decided to simplify the scope again, so benchmarks and weights are less sophisticated now. |
No description provided.