🔧 Enhance SmartAccount Initialization and Signature Validation #86
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.
Overview
This PR introduces enhancements to the
SmartAccount
contract by adding acreationFlowFuse
mechanism to manage and safeguard the account creation process more effectively. These changes aim to align with EIP-7562 by ensuring the validation context remains protected and preventing potential DoS attacks by enforcing single-use validation logic during account setup.Changes
Creation Flow Fuse Addition: Added a new
uint96
internal variablecreationFlowFuse
withinSmartAccount.sol
. This variable acts as a fuse or flag to ensure the account creation process can only be validated once, preventing reuse and potential exploits.Activation and Reset Logic: Implemented logic to set the
creationFlowFuse
during the initial account creation and reset it once the creation signature validation is performed. This ensures the creation process is tightly controlled and conforms to specified behaviors.Validation Logic Update: Modified
_validateCreationSignature
method to check thecreationFlowFuse
status before proceeding with the signature validation. If the fuse is not set (indicating a second use), the method fails, thus enforcing single-use as intended.Unit Tests: Updated and added unit tests to cover the new creation flow logic, ensuring that the fuse behaves as expected through the initialization and validation processes.
This approach not only secures the contract against misuse but also adheres strictly to the new EIP guidelines, ensuring that the contract remains robust against network-level adversarial tactics.
Links